Android高级进阶:Android触摸事件传递机制

Android事件分为三部分:

1、分发:public boolean dispatchTouchEvent(MotionEvent ev)
2、拦截:public boolean onInterceptTouchEvent(MotionEvent ev) 
3、消费:public boolean onTouchEvent(MotionEvent event)

其中拦截onInterceptTouchEvent是ViewGroup组件独有

自上而下嵌套层级:Activity——>ViewGroup——>子View

子View消耗事件情况下的响应顺序:自上而下,事件消费后终止传递,子View的onClick事件是在Up之后才响应。down事件结束于ChildView onTouchEvent

E/MainActivity: 0 dispatchTouchEvent
E/GroupText: dispatchTouchEvent
E/GroupText: onInterceptTouchEvent
E/ChildView: dispatchTouchEvent
E/ChildView: 0 onTouchListener
E/ChildView: onTouchEvent
E/MainActivity: 1 dispatchTouchEvent
E/GroupText: dispatchTouchEvent
E/GroupText: onInterceptTouchEvent
E/ChildView: dispatchTouchEvent
E/ChildView: 1 onTouchListener
E/ChildView: onTouchEvent
E/ChildView: onClick

子View不消耗事件的情况:down事件从Activity自上而下传递到子View又自下而上返回到Activity,up事件结束在Activity onTouchEvent

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

推荐阅读更多精彩内容