【发布时间】:2011-07-11 13:47:55
【问题描述】:
我想跟踪屏幕上的手指触摸。所以我所做的是在MotionEvent触发ACTION_DOWN时开始记录位置,但是我怎么知道动作何时结束,在ACTION_CANCEL,还是ACTION_UP?
它们之间的确切区别是什么?
【问题讨论】:
标签: android motion motionevent
我想跟踪屏幕上的手指触摸。所以我所做的是在MotionEvent触发ACTION_DOWN时开始记录位置,但是我怎么知道动作何时结束,在ACTION_CANCEL,还是ACTION_UP?
它们之间的确切区别是什么?
【问题讨论】:
标签: android motion motionevent
ACTION_UP:按下手势已完成,动作包含最终释放位置以及自上次向下或移动事件以来的任何中间点。
ACTION_CANCEL:当前手势已中止。
ACTION_CANCEL 发生在父级控制该动作时,例如,当用户在列表视图上拖得足够多时,它将开始滚动而不是让您按下其中的按钮。您可以在视图组文档中找到更多相关信息:onInterceptTouchEvent。
所以当动作被拖出父级时使用 ACTION_CANCEL,否则使用 ACTION_UP。
【讨论】:
一般ACTION_UP由用户在访客完成时触发,明确表示用户完成了与动作的交互。
另一方面,ACTION_CANCEL 被 Android 系统调用以指示其中一个视图使用 onInterceptTouchEvent() 获得控制权,它返回 true 作为结果系统完成传播触摸事件。
请看diagram
【讨论】: