事件的核心传递机制
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一致 |