@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;
}
解决了网上有些图片拖动坐标有偏差的问题