要将来自同一拖动手势的ACTION_DOWN和ACTION_MOVE事件相关联,可以通过以下代码示例来实现:
private GestureDetector gestureDetector;
private View targetView;
gestureDetector = new GestureDetector(this, new MyGestureListener());
targetView = findViewById(R.id.target_view);
targetView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
private class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
// 处理ACTION_DOWN事件
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
// 处理ACTION_MOVE事件
return true;
}
}
在onDown方法中可以处理ACTION_DOWN事件,在onScroll方法中可以处理ACTION_MOVE事件。通过返回true来表示已经处理了事件,返回false则表示事件未被处理。
这样,当用户在targetView上进行拖动手势时,会先触发ACTION_DOWN事件,然后触发多个ACTION_MOVE事件,通过重写的onDown和onScroll方法来处理这些事件。