Android事件分发机制详解
Android事件分发机制详解
谈到Android事件分发机制问题,大家肯定都是在熟悉不过,Android体系中的常用知识,也是面试中经常被关注的问题,我也经常被问到,以前被问事件分发机制,我都是这样回答:
ViewGroup中有
dispatchTouchEvent
,onInterceptTouchEvent
,onTouchEvent
三个方法,可以分发,拦截,消费事件,而View中只有dispatchTouchEvent
,onTouchEvent
两个方法,不能做拦截处理。事件分发–从父级向子级传递的,事件消费–从子级父级传递的。
然后再补一张分发流程图。挥笔画图一张,边画别说….
吧嗒吧嗒吧嗒…..
吧嗒吧嗒吧嗒…..
好几次的时候,我自己都佩服自己,真的厉害的不行,巴拉巴拉的口水满天飞,都不带停顿的,讲一遍比一遍熟,感觉自己真TM的已经把事件分发机制研究的完全透彻了一样。
但是实际捏,我自己很了解,忽悠归忽悠,其实自己有几斤几两,自己还是非常清楚,无非是背了几篇文章,背了下面试题,真正在使用的时候,就成了小豆芽菜了。
于是,为了解决实际中的问题,终于决定稍微细心的了解下事件传递机制,了解一些不一样的东西,以后面试的时候,也能忽悠些不一样的东西。
事件分发先走DecorView
的dispatchTouchEvent
,获取callback对象,调用cb.dispatchTouchEvent
方法
Activity默认实现了Window.Callback,所以
未完