前段时间做了个需求,一个200 * 200的view要可以被拖动,点击也可以跳转。拖动的实现很自然的想到了监听view的touch事件,在move的时候设置view的位置,代码大概如下:
mDraggableView.setOnTouchListener(new View.OnTouchListener() {
float dX;
float dY;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
dX = view.getX() - event.getRawX();
dY = view.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
view.setX(event.getRawX() + dX);
view.setY(event.getRawY() + dY);
break;
default:
return false;
}
return true;
}
});