基础Demo程序结构示意图
image.png最基本的布局
-
MainActivity是最外层布局
-
OutView继承ViewGroup
-
InnerView继承View
系统默认的事件流向(点击InnerView)
image.png针对这三个方法,职责和造成的影响如下
image.jpeg下面分几种情况介绍一下
1. 当覆写MainActivity中的dispatchTouchEvent方法的时候
- true和false,都会导致事件直接结束传递,因为没有父节点了,所以事件无法向上传递
2. 当覆写OuterView中的dispatchTouchEvent方法的时候
- 当返回值为 true 的时候,直接结束在此方法中结束事件传递
- 当返回值为 false 的时候,事件会回传到父节点(MainActivity)的onTouchEvent方法中
3. 当覆写OuterView中的onInterceptTouchEvent方法的时候
- 当返回值为 true 的时候,阻止事件向下传递,转到自己的onTouchEvent中
- 当返回值为 false 的时候,对本次事件传递不会有影响
4. 关于覆写各个节点中的onTouchEvent方法的时候
- 这个方法有个特点就是,如果默认不做任何处理,各个节点的onTouchEvent方法执行的顺序一定是从里到外的(这里默认点击的是最里层View);当有节点对事件进行处理后,后续事件也会发送过来处理
4.1. MainActivity中返回true、false或者super都没什么区别,最后还是会回到MainActivity中
Down事件
image.pngMOVE、UP等后续事件
image.png4.2. OuterView中返回true
Down事件
image.pngMOVE、UP等后续事件
image.png4.3. OuterView中返回false
Down事件
image.pngMOVE、UP等后续事件
image.png4.4. InnerView中返回true
Down事件
image.pngMOVE、UP等后续事件
image.png4.5. InnerView中返回false
Down事件
image.pngMOVE、UP等后续事件
image.png这样,所有的方法的影响基本就列举完整了,但是大多数情况下都是需要组合起来使用。基本就是系统事件传递主线中可以随时进行介入,根据每个方法的特性,去合理安排介入时机来完成事件的合理分发处理。
网友评论