1. 程式人生 > >實現view跟著手指滑動的效果(實現方式二)

實現view跟著手指滑動的效果(實現方式二)

方式二的這個方法相當於系統提供的一個對左右、上下移動的API的封裝。當計算出偏移量後,只需要使用如下程式碼就可以完成view的重新佈局,效果於使用layout方法一樣,程式碼如下:

//同時對left和right進行偏移
offsetLeftAndRight(offsetX);
//同時對top和bottom進行偏移
offsetTopAndBottom(offsetY);
這裡的offsetX和offsetY於在Layout方法中計算offset的方法一樣,這裡就不重複了。

完整程式碼如下:

public class DragView extends TextView {

    private int 
lastX; 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); } @Override
public 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; } }