【问题标题】:android: what's the impact if OnTouchEvent returning false when ACTION_MOVE?android: 如果 OnTouchEvent 在 ACTION_MOVE 时返回 false 会有什么影响?
【发布时间】:2015-02-05 14:59:36
【问题描述】:

关于ACTION_DOWN,如果在视图的onTouchEvent函数中返回false,我们就收不到下面的

ACTION_MOVE

ACTION_UP

ACTION_CANCEL

但是当 ACTION_MOVE 时返回 false 有什么影响呢?喜欢

public boolean onTouchEvent(MotionEvent ev) {
    switch (ev.getActionMasked()) {
    case MotionEvent.ACTION_MOVE:
    case MotionEvent.ACTION_CANCEL:
        super.onTouchEvent(ev);
        return false;
    }
    return super.onTouchEvent(ev);
}

我用listview 进行了测试,看起来还不错..

【问题讨论】:

标签: android view


【解决方案1】:

当 onTouchEvent 为 ACTION_DOWN 返回 false 时,视图不会再收到 onTouchEvent 的调用,父视图会收到带有 ACTION_DOWN 的 onTouchEvent 调用,父视图会通过返回来决定是否处理触摸事件是则为真,否则为假

如果视图对ACTION_DOWN返回true,而对ACTION_MOVE返回false,会继续获取onTouchEvent调用,父视图不会收到任何onTouchEvent调用,看来思路是这个触摸序列已经决定了由该视图处理,因此即使视图中途返回 false,我们仍然不会开始在父视图上调用 onTouchEvent

但是,每次该视图对非 ACTION_DOWN onTouchEvent 调用返回 false 时,托管该视图的 Activity 都会收到一个 onTouchEvent 调用,事实就是如此,这可能不是任何人想要的合理结果

【讨论】:

  • 在我的情况下,在我评估 ACTION_MOVE 上的一些逻辑之后,我需要父处理触摸,我该怎么办?
猜你喜欢
  • 1970-01-01
  • 2019-10-07
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2017-02-27
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
相关资源
最近更新 更多