想要DragView随着手指移动首先得获取偏移量,获取偏移量一般有2种思路。
(1),通过event.getX()。
@Override
public boolean onTouchEvent(MotionEvent event)
{
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
mLastX = x;
mLastY = y;
break;
case MotionEvent.ACTION_MOVE:
int offsetX = x - mLastX;
int offsetY = y - mLastY;
//TODO在这里处理其他逻辑
break;
case MotionEvent.ACTION_UP:
break;
}
//注意这里得返回true,或者给DragView加上android:clickable=true。
return true;
}
(2),通过event.getRawX()。
@Override
public boolean onTouchEvent(MotionEvent event)
{
int rawX = (int) event.getRawX();
int rawY = (int) event.getRawY();
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
mLastRawX = rawX;
mLastRawY = rawY;
break;
case MotionEvent.ACTION_MOVE:
int offsetX = rawX - mLastRawX;
int offsetY = rawY - mLastRawY;
//TODO在这里处理其他逻辑
//与第一种方法的不同之处
mLastRawX= rawX;
mLastRawY= rawY;
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}