【问题标题】:What actually happens if I return false in a OnTouchListener?如果我在 OnTouchListener 中返回 false,实际会发生什么?
【发布时间】:2014-03-01 22:57:15
【问题描述】:

我正在创建一个需要SurfaceView 来实现OnTouchListener 的游戏。在游戏中我想暂停监听器一段时间。我尝试从onTouch()方法返回false,但该方法仍在执行。有没有其他方法可以让监听器暂停一段时间?谁能解释一下从onTouch() 返回 false 的真正含义?

【问题讨论】:

    标签: java android return ontouchlistener


    【解决方案1】:

    来自View documentation

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

    如果您返回 true,您会告诉 android 媒体已处理完毕。忘了它。

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

    【讨论】:

      【解决方案2】:

      如果返回 true,则向系统发出信号,表明您已使用该事件,如 documentation 所示。这意味着其他也有 touchlistener 的视图不会得到这个事件来处理。如果您返回 false,则事件将传递给父视图进行处理。

      例如,如果您有一个嵌套在 Viewpager 内的 ListView,则 Listview 是第一个可以处理 touchevent 的视图。如果是水平滑动,则不会通过 listview 处理事件,而 viewpager 将能够处理滑动。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2019-10-07
          • 1970-01-01
          • 2011-08-06
          • 1970-01-01
          • 1970-01-01
          • 2022-01-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多