如何检测onLongClick ACTION_UP事件?

时间:2011-08-19 16:58:22

标签: android motion-detection

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

现在,如果我为此图片实施OnTouchListener,那么我会抓住ACTION_DOWN进行正常点击。我只想抓住Long点击。

为什么不点击火ACTION_UP事件?如何检测此事件并停止计时器。

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

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

1 个答案:

答案 0 :(得分:9)

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

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

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