android事件的传递
2018-02-07 本文已影响0人
super大磊
1.定义为View为控件的最小单位,activity拥有onTouchEvent(),dispatchTouchEvent();View拥有onTouchEvent(),dispatchTouchEvent(),ViewGroup拥有onTouchEvent(),dispatchTouchEvent(),以及onInterceptTouchEvent();通过自定义一个textview,来点击它,得到日志,总结为流程图
2.通过流程图我们很清晰得到以下三点结论:
A.触摸事件的流 程传递是从disPatchTouchEvent()开始的,若人为不干涉(返回super),则事件会依照嵌套顺序从最外层向内层传递,如果到达最内层view时,会调用它的onTouchEvent()来进行消费处理,若消费不了,返回false,这时候事件会重新向外传递,并由外层View的onTouchEvent()来消费,以此类推。
B.ViewGroup通过onInterceptTouchEvent()方法对事件进行拦截,如果该方法返回true,则事件不会继续传给子View,若为super或者false,则不会拦截,继续传给内层子view。
C.在子view中对事件进行消费后,ViewGroup将收不到任何事件。