有关View事件分发的面试回答

面试:简述view的事件分发机制?

说真的在遇到这问题时候其实我也不太清楚,我也不知道该如何回答,现就将自己所知道的一点点写出来大家补充补充。

首先你需要知道的是:

只要你触摸到了任何一个控件,就一定会调用该控件的dispatchTouchEvent方法。

而dispatchTouchEvent方法是有返回值的,具体看源码:

(只要我们给控件注册了touch事件,mOnTouchListener就一定被赋值了,按钮是否可用,默认为可用,因此条件恒成立,判断touch 事件返回 true 。如果三者都成立将返回true,否则执行onTouchEvent 事件)

也就是说:触发到dispatchTouchEvent 事件后,先执行onTouch 事件,(所以onTouch事件高于onClick)如果onTouch返回了true,dispatchTouchEvent返回了true,onClick 事件将不再执行。而onClick事件的执行是在onTouchEvent 中,所以说:

onTouch优先于onTouchEvent执行。如果在onTouch方法中通过返回true将事件消费掉,onTouchEvent将不会再执行,当然onClick也不执行了。

我就理解了这么点 也不知道怎么 更好的组织语言,大家来回答回答吧!

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

推荐阅读更多精彩内容