實現view跟著手指滑動的效果(實現方式二)
阿新 • • 發佈:2019-02-12
方式二的這個方法相當於系統提供的一個對左右、上下移動的API的封裝。當計算出偏移量後,只需要使用如下程式碼就可以完成view的重新佈局,效果於使用layout方法一樣,程式碼如下:
//同時對left和right進行偏移 offsetLeftAndRight(offsetX); //同時對top和bottom進行偏移 offsetTopAndBottom(offsetY);這裡的offsetX和offsetY於在Layout方法中計算offset的方法一樣,這裡就不重複了。
完整程式碼如下:
public class DragView extends TextView { private intlastX; private int lasty; public DragView(Context context) { super(context); initView(); } public DragView(Context context, AttributeSet attrs) { super(context, attrs); initView(); } private void initView() { setBackgroundColor(Color.BLUE); } @Overridepublic boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //記錄觸控點的座標 lastX = x; lasty = y; break; case MotionEvent.ACTION_MOVE: //計算偏移量 int offsetX = x - lastX; int offsetY = y - lasty; //同時對left和right進行偏移 offsetLeftAndRight(offsetX); //同時對top和bottom進行偏移 offsetTopAndBottom(offsetY); break; case MotionEvent.ACTION_UP: break; } return true; } }