13

I want to track a finger touch on the screen. So what I did was to start recording the position when MotionEvent triggers ACTION_DOWN, but how do I know when the action is finished, at ACTION_CANCEL, or ACTION_UP?

What's the exact difference between them?

4

2 回答 2

19

运动事件:

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

  • ACTION_CANCEL:当前手势已中止。

ACTION_CANCEL 发生在父级控制该动作时,例如,当用户在列表视图上拖得足够多时,它将开始滚动而不是让您按下其中的按钮。您可以在视图组文档中找到更多信息:onInterceptTouchEvent

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

于 2011-03-09T04:23:25.773 回答
0

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

另一方面ACTION_CANCEL,由 Android 系统调用以指示其中一个视图使用onInterceptTouchEvent()它返回 true 作为结果系统完成传播触摸事件的控制。

请看一张

于 2019-07-26T14:54:51.293 回答