【问题标题】:What's the difference between ACTION_CANCEL and ACTION_UP in MotionEvent?MotionEvent 中的 ACTION_CANCEL 和 ACTION_UP 有什么区别?
【发布时间】:2011-07-11 13:47:55
【问题描述】:

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

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

【问题讨论】:

    标签: android motion motionevent


    【解决方案1】:

    MotionEvent:

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

    • ACTION_CANCEL:当前手势已中止。

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

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

    【讨论】:

      【解决方案2】:

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

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

      请看diagram

      【讨论】:

        猜你喜欢
        • 2022-06-19
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        相关资源
        最近更新 更多