下沉传递和冒泡响应的过程
dispatchTouchEven 下沉传递
onInterceptTouchEvent 拦截
onTouch或onTouchEvent 冒泡响应
<div a>
<div b></div>
</div>
- 下沉传递 (a)
- 拦截 (if false)
- 下沉传递 (b)
- 冒泡响应(b)
- 冒泡响应(a)
- 下沉传递 (a)
- 拦截 (if true)
- 冒泡响应(a)
那onTouch和onTouchEvent两个函数有什么区别呢?
1. 从响应顺序上,onTouchListener的onTouch方法优先级比onTouchEvent高,会先触发。 假如onTouch方法返回false,会接着触发onTouchEvent,反之onTouchEvent方法不会被调用。
2. 从使用方式上,在自定义View里使用onTouchEvent,系统提供的View使用onTouch接口。