图片跟随手指移动的Demo,设置了图片不能出界

package com.example.demoImageSport;

import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;

public class MainActivity extends Activity {
	 private ImageView img1;  
	    private ImageView img2;  
	    private int screenWidth;  
	    private int screenHeight;  
	  
	    /** Called when the activity is first created. */  
	    @Override  
	    public void onCreate(Bundle savedInstanceState) {  
	        super.onCreate(savedInstanceState);  
	        setContentView(R.layout.activity_main);  
	  
	        img1 = (ImageView) findViewById(R.id.imageView1);  
	        img2 = (ImageView) findViewById(R.id.imageView2);  
	  
	        DisplayMetrics dm = getResources().getDisplayMetrics();  
	        screenWidth = dm.widthPixels;  
	        screenHeight = dm.heightPixels - 50;  
	  
	        img1.setOnTouchListener(movingEventListener);  
	        img2.setOnTouchListener(movingEventListener);  
	  
	    }  
	    
	    //触摸监听事件
	  
	    private OnTouchListener movingEventListener = new OnTouchListener() {  
	        int lastX, lastY;  
	  
	        @Override  
	        public boolean onTouch(View v, MotionEvent event) {  
	            switch (event.getAction()) {  
	            case MotionEvent.ACTION_DOWN:  
	                lastX = (int) event.getRawX();  
	                lastY = (int) event.getRawY();  
	                break;  
	            case MotionEvent.ACTION_MOVE:  
	                int dx = (int) event.getRawX() - lastX;  
	                int dy = (int) event.getRawY() - lastY;  
	  
	                int left = v.getLeft() + dx;  
	                int top = v.getTop() + dy;  
	                int right = v.getRight() + dx;  
	                int bottom = v.getBottom() + dy;  
	                // 设置不能出界  
	                if (left < 0) {  
	                    left = 0;  
	                    right = left + v.getWidth();  
	                }  
	  
	                if (right > screenWidth) {  
	                    right = screenWidth;  
	                    left = right - v.getWidth();  
	                }  
	  
	                if (top < 0) {  
	                    top = 0;  
	                    bottom = top + v.getHeight();  
	                }  
	  
	                if (bottom > screenHeight) {  
	                    bottom = screenHeight;  
	                    top = bottom - v.getHeight();  
	                }  
	  
	                v.layout(left, top, right, bottom);  
	  
	                lastX = (int) event.getRawX();  
	                lastY = (int) event.getRawY();  
	  
	                break;  
	            case MotionEvent.ACTION_UP:  
	                break;  
	            }  
	            return true;  
	        }  
	    };  
}


你可能感兴趣的:(图片跟随手指移动的Demo,设置了图片不能出界)