ViewGroup的事件分发源码分析

本文主要研究ViewGruop事件源码分析,一个触摸操作,到底触发ViewGroup和View的那些事件分发。

演示代码如下:


测试函数和方法

1、在正常未处理的情况下,完整的事件分发的顺序 Down-->Move-->Up

第一次在Down事件下 :ViewGroup.dispatchTouchEvent----> ViewGroup.onInterceptTouchEvent

                                                ---->View.dispatchTouchEvent ----> View.onTouch----->View.onTouchEvent

第二次在Move事件下 :ViewGroup.dispatchTouchEvent----> ViewGroup.onInterceptTouchEvent

                                               ---->View.dispatchTouchEvent ----> View.onTouch----->View.onTouchEvent

第三次在UP事件下 :   ViewGroup.dispatchTouchEvent----> ViewGroup.onInterceptTouchEvent

                                              ----> View.dispatchTouchEvent ----> View.onTouch----->View.onTouchEvent ------>View.onClick

源码流程分析


总结:最终在OnClick结束此次触摸事件

2、在上述测试代码掐掉OnClick()的情况下,完整的事件分发的顺序 Down-->Move-->Up

第一次在Down事件下 :ViewGroup.dispatchTouchEvent---->ViewGroup.onInterceptTouchEvent

                                              ---->View.dispatchTouchEvent ---->View.onTouch----->View.onTouchEvent------>ViewGroup.onTouchEvent

第二次在Move事件下 :无

第三次在UP事件下 :   无

源码分析


3、在上述测试代码ViewGroup.onInterceptTouchEvent(true)  的情况下,完整的事件分发的顺序 Down-->Move-->Up

第一次在Down事件下:ViewGroup.dispatchTouchEvent---->ViewGroup.onInterceptTouchEvent---->ViewGroup.onTouchEvent

第二次在Move事件下:无

第三次在UP事件下:  无

源码分析 


4、在上述测试代码 View.onTouchEvent(true)  的情况下,完整的事件分发的顺序 Down-->Move-->Up

第一次在Down事件下 :ViewGroup.dispatchTouchEvent---->ViewGroup.onInterceptTouchEvent

                                              ---->View.dispatchTouchEvent ---->View.onTouch----->View.onTouchEvent

第二次在Move事件下 :ViewGroup.dispatchTouchEvent---->ViewGroup.onInterceptTouchEvent

                                             ---->View.dispatchTouchEvent ---->View.onTouch----->View.onTouchEvent

第三次在UP事件下 :   ViewGroup.dispatchTouchEvent---->ViewGroup.onInterceptTouchEvent

                                              ----> View.dispatchTouchEvent ---->View.onTouch----->View.onTouchEvent

源码分析

参考上一篇文章,View的onTouch事件的源码分析

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容