Android事件分发机制总结

来源:互联网 发布:含钢量计算软件 编辑:程序博客网 时间:2024/06/04 19:24

Android事件分发机制总结


当我们去面试的时候,面试官都会问一问Android 里面的事件分发机制,如果要详细说的话估计没有几个能够完整的描述出来。

所以为了我自己也为了其他去面试的小伙伴,我也出来总结一下Android 里面的事件分发机制,起码这样回答能够得70分吧,

呵呵。


1. 只要你触摸到任何一个控件(或者说View),就一定会调用该控件的 dispatchTouchEvent  方法。   

2. 然后事件分发中方法的调用顺序应该是dispatchTouchEvent -> onTouch -> onTouchEvent -> (onClick或者其他方法)

3. 如果在onTouch方法中通过返回true将事件消费掉,onTouchEvent将不会再执行下去。

4. 如果你有一个控件是非enable的,那么给它注册onTouch事件将永远得不到执行。对于这一类控件,如果我们想监听它的touch事件,

就必须通过在该控件中重写onTouchEvent方法来实现。

5. ViewGroup 也是View的子类,只不过比起View,它多了可以包含子View和定义布局参数的功能。

6. 可在继承至ViewGroup的控件重写onInterceptTouchEvent方法来改变或者拦截传递給View的事件,如果返回true, 则不传递给View。

7.最重要的一点,Android中touch事件的传递,绝对是先传递到ViewGroup,再传递到View的。

8. 当你点击了某个控件,首先会去调用该控件所在布局的dispatchTouchEvent方法,然后在布局的dispatchTouchEvent方法中找到被点击的相应控件,

再去调用该控件的dispatchTouchEvent方法。

9. 整个ViewGroup事件分发过程,


10. 子View中如果将传递的事件消费掉,ViewGroup中将无法接收到任何事件。



0 0