android事件的传递

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将收不到任何事件。

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

推荐阅读更多精彩内容