如果我在OnTouchListener中返回false,会发生什么?

时间:2014-02-05 13:19:08

标签: java android return ontouchlistener

我正在制作一款需要SurfaceView来实施OnTouchListener的游戏。在游戏过程中,我想暂停监听器一段时间。我尝试从onTouch()方法返回false,但方法仍然在执行。是否有其他方法让监听器暂停一段时间?有人请解释从onTouch()实际上是什么意思返回虚假的内容吗?

3 个答案:

答案 0 :(得分:12)

来自View documentation

Returns
True if the listener has consumed the event, false otherwise.

如果你返回true,你告诉安卓有关媒体的处理。算了吧。

如果您返回false,您基本上会说“不是我的问题,其他人将不得不照顾此点击”。然后android会将事件传递给其他视图,这些视图可能在您的视图之下。

答案 1 :(得分:3)

如果您返回true,则表示系统已经消耗了您在documentation中看到的事件。这意味着其他具有touchlistener的视图也不会获得此事件进行处理。如果返回false,则事件将传递给父视图以进行处理。

例如,如果ListView嵌套在Viewpager中,则Listview是第一个可以处理touchevent的视图。如果是水平滑动,则不会通过列表视图处理事件,并且viewpager将能够处理滑动。

答案 2 :(得分:0)

您必须取消注册您的实施。您可以提供null作为参数。暂停模式结束时再次设置。如果您return true,触摸事件将不会传递给其他可能的视图。