写一个DragView 继承 View,重写onTouchEvent方法:
首先:
int x = (int)event.getRawX();
int y = (int)event.getRawY();
获得实时的手指坐标。
然后,判断触摸事件:
Down: mLastX = x; mLastY = y;
Move: offsetX = x - mLastX; offsetY = y - mLastY; 表示位移量;
此时有两种方法来实现view随手指移动:
① ((View)getParent).scrollBy(-offsetX, -offsetY);
注意:
需要getParent()是因为拖动的是View的content, 而不是View, 所以我们要拿到父View, 拖动他的content, 也就是子View了。
scrollBy()代表拖动的位移量,scrollTo()是拖动到目标坐标;这里拖动的offsetX,offsetY 为负值,是因为
参考系选择的差异,移动的是ViewGroup, 看到的View在背后的Content上;
② layout(getLeft() + offsetX, getTop+ offsetY, getRight()+offsetX, getBottom + offsetY);
最后记得把 mLastX = x; mLastY = y; 更新手指最后停留的位置坐标;
————————————————————————————————————————
如果一开始获得实时手指坐标为
int x = (int)event.getX();
int y = (int)event.getY();
此时就不用更新mLastX,mLastY了;