android 图片拖动

@Override
 public boolean onTouch(View arg0, MotionEvent event) {
 int aciton = event.getAction();
 switch(aciton){
 case MotionEvent.ACTION_DOWN:
 //初始化手指触点的位置
 contactX = (int) event.getRawX();
 contactY = (int) event.getRawY();
 //计算出手指触点 相对于 图片位置的坐标差
 tempX = contactX - (int) img.getX();
 tempY = contactY - (int)img.getY();
 break;
 case MotionEvent.ACTION_MOVE:
 //不断获取手指触点的位置
 contactX = (int) event.getRawX();
 contactY = (int) event.getRawY();
 //根据 触点相对于 图片位置的坐标差来 计算图片相对于 parent 的位置
 
 int top = contactX - tempX; 
 int left = contactY -tempY;
 int right =top +img.getMeasuredWidth(); 
 int bottom =left+img.getMeasuredHeight();
 //top, left,right,bottom  都是相对于父控件的左上角
 img.layout(top, left,right,bottom);
 img.postInvalidate();
 break;
 }
 return false;
 }

解决了网上有些图片拖动坐标有偏差的问题

你可能感兴趣的:(android 图片拖动)