我覆盖了dispatchTouchEvent()方法,以检测活动中的每一次触摸。

 @Override
public boolean dispatchTouchEvent(MotionEvent event) {
    System.out.println("android test "+event.toString());
    return super.dispatchTouchEvent(event);
}


但是此方法仅捕获ACTION_UP,ACTION_DOWN和ACTION_MOVE事件,而不捕获ACTION_CANCEL事件。这可能是什么原因?

最佳答案

@pskink的答案是正确的。即ACTION_CANCEL是系统事件。

“ ACTION_CANCEL是在父级控制运动时发生的,例如,当用户在列表视图中拖动足够多以使其开始滚动而不是让您按下i内部的按钮时,就会发生。

http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent%28android.view.MotionEvent%29

10-08 08:26