首先要理解事件分发机制。
关于事件分发机制,ViewGroup的事件分发,有3个关键方法 dispatherTouchEvent,onInterceptTouchEvent,onTouchEvent。
分发,拦截,执行。
滑动冲突的产生,主要是因为 ,存在有多层嵌套的可滑动viewGroup,那么如果真的到了这种场景,到底应该如何响应呢?应该响应哪一层的滑动事件呢?
多层嵌套的可滑动ViewGroup,三种情况(两层嵌套内外可滑动方向一致,两层嵌套内外可滑动方向不一致,内外嵌套超过3层含3层),照理说,如果不做任何处理,程序应该会默认响应所有的滑动事件,但是事实上,这种默认的处理方式往往不是我们想要的结果。
那么,如何解决滑动冲突呢?
方法1)onInterceptorTouchEvent 外部拦截, 知道消息分发机制的人应该熟悉这个方法,它是用来拦截从外发送到内的触摸事件的,如果返回值是true,就不会往下下发消息。确保只有外层响应滑动事件,从而解决冲突。
方法2)dispathTouchEvent 内部拦截,
实际的案例,后面填补。
原文地址:https://www.cnblogs.com/hankzhouAndroid/p/9005977.html
时间: 2024-10-06 08:54:15