0
  • 最佳答案

    搞定了,如果在onInterceptToutchEvent返回true拦截的话(会执行当前ViewGroup的onToutchEvent , 所以上面我可以在onToutchEvent处理事件),子view会收到ACTION_CANCEL事件,在一次完整的事件中,收到ACTION_CANCEL之后,就不会收到后续的Move和Up事件.

    尽管后面onInterceptToutchEvent已经不满足拦截条件,但子View被cancel掉了,所以就收不到后续的MOVE了;

    解决:

    我选择在当前view的dispatchTouchEvent中满足条件返回true拦截,这样事件同样不会向下分发,但子View不会CANCEL,不满足条件时后续的事件还可以收到;(dispatchTouchEvent返回true拦截后,不会执行当前view的onToutchEvent,因此不能在onToutchEvent处理事件,这里我选择在dispatchTouchEvent里处理事件)

    嗯,我的理解是这样的

    1331285677068902400  评论     打赏       ak
    • 冒着泡泡的汽水儿  回复 @ak
      从分发的角度上做逻辑确实简单了很多
      冒着泡泡的汽水儿 2022-02-25 11:03   回复 1255088796991492096
  • 有没有一种可能 就是你上下滑相加小于你的滑动系数呢

    1382711465131241472  评论     打赏       阿肥
    • ak  回复 @阿肥
      比如我先往上滑推上去,接着往下滑拖回来,滑回到临界点,也就是复原到了初始状态 当前位置==手指按下时位置 的时候,就停住了,不能执行下拉操作
      ak 2022-02-25 09:34   回复 1331285677068902400
  • 你下滑都做到了,那就考虑方向问题咯。

    1153952789488054272  评论     打赏       拉大锯
    相关问题
    幻影~ · 提问
    2024-04-13 20:13 8 2
    幻影~ · 找工作
    2024-04-07 10:44 14 2
    幻影~ · 问题
    2024-03-31 17:20 7 2
    TONYGFX · AOSP
    2024-03-28 17:11 4 2