Skip to content
阅读进度

dispatchTouchEvent onInterceptTouchEvent 和 onTouchEvent 是什么关系? ​

返回 Framework 与系统服务 目录

标准回答 ​

dispatchTouchEvent 是分发入口;ViewGroup 的 onInterceptTouchEvent 决定是否拦截并由父容器处理;onTouchEvent 负责当前 View 的实际消费。一组手势通常由 DOWN 建立触摸目标,后续 MOVE 和 UP 继续交给该目标。父容器可以在中途决定拦截,此时子 View 会收到 CANCEL,父容器开始处理后续事件。解决滑动冲突时,我会根据方向和距离确定拦截条件,必要时由子 View 请求 requestDisallowInterceptTouchEvent,保证整组手势有一致归属。

延伸追问 ​

子 View 不消费 DOWN 时,通常不会成为后续事件的触摸目标;多指拆分等情况需要结合 ViewGroup 的具体配置。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。