如何检测 onLongClick ACTION_UP 事件?

发布于 2024-11-30 14:32:04 字数 489 浏览 1 评论 0原文

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

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

为什么长按不会触发 ACTION_UP 事件?我怎样才能检测到这个事件并停止计时器。

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

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

I have an image which implements both OnClickListener and OnLongClickListener. In the OnLongClickListener at press down (ACTION_DOWN) I start a timer. I want to cancel it at ACTION_UP.

Now, if I implement OnTouchListener for this image, then I catch ACTION_DOWN for normal clicks. And I want to catch Long clicks ONLY.

Why does not long click fire ACTION_UP event? How can I detect this event and stop the timer.

If you need a code, I can post it, but I do not think it will help you as there is no errors in the code.

PS. I cannot stop the timer at any specific time or value as this long press continuously increase the value of another element. This increase process should stop only at image long press ACTION_UP.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冬天的雪花 2024-12-07 14:32:04

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

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

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

Just use OnTouchListener and forget about OnLongClickListener. You can detect a long click by checking coordinates and pressed time, you have all that info in MotionEvent object passed by OnTouch().

1- To check coordinates, use getX() and getY() from MotionEvent and getDrawingRect() from your ImageView container.

2- To check for pressed time, use getEventTime(), storing first time in ACTION_DOWN and then compute by substracting with time in ACTION_UP event. You could assume like 800mS for a long click.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文