Android 滑动冲突以及如何解决

首先要理解事件分发机制。

 

关于事件分发机制,ViewGroup的事件分发,有3个关键方法 dispatherTouchEvent,onInterceptTouchEvent,onTouchEvent。

分发,拦截,执行。

 

滑动冲突的产生,主要是因为 ,存在有多层嵌套的可滑动viewGroup,那么如果真的到了这种场景,到底应该如何响应呢?应该响应哪一层的滑动事件呢?

多层嵌套的可滑动ViewGroup,三种情况(两层嵌套内外可滑动方向一致,两层嵌套内外可滑动方向不一致,内外嵌套超过3层含3层),照理说,如果不做任何处理,程序应该会默认响应所有的滑动事件,但是事实上,这种默认的处理方式往往不是我们想要的结果。

那么,如何解决滑动冲突呢?

方法1)onInterceptorTouchEvent 外部拦截, 知道消息分发机制的人应该熟悉这个方法,它是用来拦截从外发送到内的触摸事件的,如果返回值是true,就不会往下下发消息。确保只有外层响应滑动事件,从而解决冲突。

方法2)dispathTouchEvent 内部拦截

 

实际的案例,后面填补。

 

猜你喜欢

转载自www.cnblogs.com/hankzhouAndroid/p/9005977.html