Android事件分发

1、事件分发,由父到子,及Activity->ViewGroup->View,

     三个函数: dispatchTouchEvent, onInterruptEvent(ViewGroup持有), onTouchEvent  

2、手指按下事件down,系统代码执行过程; 

1、调用Activity.dispatchTouchEvent

2、默认情况下再去调用root ViewGroup.dispatchTouchEvent

3、再去遍历root ViewGroup逐步匹配view,看事件是否被消费,及看View.dispatchTouchEvent是否返回true,如果返回true,那么就被消费

4、调用view.dispatchTouchEvent,先判断是否有设置touchListener事件,如果有,就调用TouchListener的onTouch方法, 

         1、onTouch方法返回false,表示还未消费完事件,继续往下调用view.onTouchEvent方法

              1.1 该view没有设置clickable或者点击事件,那么事件继续回传给父类的onTouchEvent执行

               1.2如果有设置了clickable或者点击事件,那么该事件消费完毕

        2、onTouch方法返回true,表示已消费完事件,事件传递结束

5、因此如果有设置,那么onTouch肯定先于onTouchEvent执行


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

推荐阅读更多精彩内容