MotionEvent中的ACTION_CANCEL和ACTION_UP有什么区别?

时间:2011-03-09 02:40:35

标签: android motion motionevent

我想跟踪屏幕上的手指触摸。所以我做的是在MotionEvent触发ACTION_DOWN时开始记录位置,但我怎么知道动作何时结束,ACTION_CANCELACTION_UP

它们之间的确切区别是什么?

2 个答案:

答案 0 :(得分:19)

MotionEvent:

  • ACTION_UP:按下的手势已完成,动作包含最终发布位置以及自上次下移或移动事件以来的任何中间点。

  • ACTION_CANCEL:当前手势已中止。

当父级拥有动作时,会发生ACTION_CANCEL,例如,当用户在列表视图中拖动足够的内容时,它将开始滚动而不是让您按下其中的按钮。您可以在viewgroup文档中找到有关它的更多信息:onInterceptTouchEvent

所以当动作被拖出父动作时使用ACTION_CANCEL,否则使用ACTION_UP。

答案 1 :(得分:0)

通常,ACTION_UP由用户在访客完成时触发,以明确指示用户已完成与动作的交互。

另一方面,系统调用ACTION_CANCEL来表明父视图接管了其中一个子视图的控制。

请看看diagram