面试:简述view的事件分发机制?
说真的在遇到这问题时候其实我也不太清楚,我也不知道该如何回答,现就将自己所知道的一点点写出来大家补充补充。
首先你需要知道的是:
只要你触摸到了任何一个控件,就一定会调用该控件的dispatchTouchEvent方法。
而dispatchTouchEvent方法是有返回值的,具体看源码:
也就是说:触发到dispatchTouchEvent 事件后,先执行onTouch 事件,(所以onTouch事件高于onClick)如果onTouch返回了true,dispatchTouchEvent返回了true,onClick 事件将不再执行。而onClick事件的执行是在onTouchEvent 中,所以说:
onTouch优先于onTouchEvent执行。如果在onTouch方法中通过返回true将事件消费掉,onTouchEvent将不会再执行,当然onClick也不执行了。
我就理解了这么点 也不知道怎么 更好的组织语言,大家来回答回答吧!