事件的核心传递机制

|Touch 事件相关方法|方法功能|ViewGroup|View|传递方向|
|-|-|-|
|dispatchTouchEvent|事件分发|yes|yes|从根布局到子布局|
|onInterceptTouchEvent|事件拦截|yes|no|从根布局到子布局|
|onTouchEvent|事件响应|yes|yes|从子布局到根布局|

点击、长点击、双击事件与触摸事件的关系

onTouch和onTouchEvent有什么区别

这两个方法都是在View的dispatchTouchEvent中调用的,onTouch优先于onTouchEvent执行。如果在onTouch方法中通过返回true将事件消费掉,onTouchEvent将不会再执行

方法返回ture、false时候的效果

dispatchTouchEvent返回值 注解
true 当前dispatchTouchEvent消费,停止传递
false 父ViewonTouchEvent消费
默认 分发给当前ViewonInterceptTouchEvent
onInterceptTouchEvent返回值 注解
true 拦截,当前的onTouchEvent消费
false 发行,交给子viewdispatchTouchEvent
默认 拦截,当前的onTouchEvent消费
onTouchEvent返回值 注解
true 消费该事件
false 父ViewonTouchEvent消费
默认 同false一致

要求父类禁止屏蔽事件

requestDisallowInterceptTouchEvent()