2011-08-19 56 views
0

我有一个图像,实现OnClickListenerOnLongClickListener。在OnLongClickListener按下(ACTION_DOWN)我开始一个计时器。我想取消它在ACTION_UP如何检测onLongClick ACTION_UP事件?

现在,如果我为此图片实现了OnTouchListener,那么我会捕获ACTION_DOWN进行正常点击。我只想捕捉长时间点击。

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

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

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

回答

9

只要使用OnTouchListener并忘记OnLongClickListener。您可以通过检查坐标和按下时间来检测长按,您可以通过OnTouch()传递MotionEvent对象中的所有信息。 1-要检查坐标,请使用MotionEvent中的getX()和getY()以及ImageView容器中的getDrawingRect()。

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

+0

对于位于viewpager内部的gridview中的griditem,怎么办?有没有一种方法可以将所有其他口味的食物冻结,直到长按完成 – ChuckKelly