事件的核心传递机制
|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 | 父View的onTouchEvent消费 |
默认 | 分发给当前View的 onInterceptTouchEvent |
onInterceptTouchEvent返回值 | 注解 |
---|---|
true | 拦截,当前的onTouchEvent消费 |
false | 发行,交给子view的dispatchTouchEvent |
默认 | 拦截,当前的onTouchEvent消费 |
onTouchEvent返回值 | 注解 |
---|---|
true | 消费该事件 |
false | 父View的onTouchEvent消费 |
默认 | 同false一致 |
要求父类禁止屏蔽事件
requestDisallowInterceptTouchEvent()