Android 滑动冲突以及如何解决

Posted 波澜不惊x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 滑动冲突以及如何解决相关的知识,希望对你有一定的参考价值。

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

 

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

分发,拦截,执行。

 

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

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

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

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

方法2)dispathTouchEvent 内部拦截

 

实际的案例,后面填补。

 

以上是关于Android 滑动冲突以及如何解决的主要内容,如果未能解决你的问题,请参考以下文章

Webview&Viewpager滑动冲突解决方案

Android 解决viewPager中嵌套webView的滑动冲突

Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突

Android点击事件和滑动冲突解决

从源码角度分析Android 事件分发机制以及常见滑动冲突解决方案

从源码角度分析Android 事件分发机制以及常见滑动冲突解决方案