【问题标题】:How to detect onLongClick ACTION_UP event?如何检测 onLongClick ACTION_UP 事件?
【发布时间】:2011-08-19 16:58:22
【问题描述】:

我有一个同时实现OnClickListenerOnLongClickListener 的图像。在OnLongClickListener 按下 (ACTION_DOWN) 我启动了一个计时器。我想在ACTION_UP 取消它。

现在,如果我为此图像实现OnTouchListener,那么我会捕获ACTION_DOWN 以获得正常点击。我只想捕捉长点击。

为什么长按不触发ACTION_UP事件?如何检测此事件并停止计时器。

如果您需要代码,我可以发布它,但我认为它不会对您有所帮助,因为代码中没有错误。

PS。我无法在任何特定时间或值停止计时器,因为长按会不断增加另一个元素的值。此增加过程应仅在图像长按ACTION_UP 时停止。

【问题讨论】:

    标签: android motion-detection


    【解决方案1】:

    只需使用 OnTouchListener 并忘记 OnLongClickListener。您可以通过检查坐标和按下时间来检测长按,您拥有所有由 OnTouch() 传递的 MotionEvent 对象中的信息。

    1- 要检查坐标,请使用 MotionEvent 中的 getX() 和 getY() 以及 ImageView 容器中的 getDrawingRect()。

    2- 要检查按下的时间,请使用 getEventTime(),将第一次存储在 ACTION_DOWN 中,然后通过减去 ACTION_UP 事件中的时间来计算。您可以假设长按大约 800 毫秒。

    【讨论】:

    • 对于位于 viewpager 内部的 gridview 中的 griditem 怎么办?有没有办法在长按完成之前冻结所有其他触摸事件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多