Android 滑动冲突以及如何解决
Posted 波澜不惊x
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 滑动冲突以及如何解决相关的知识,希望对你有一定的参考价值。
首先要理解事件分发机制。
关于事件分发机制,ViewGroup的事件分发,有3个关键方法 dispatherTouchEvent,onInterceptTouchEvent,onTouchEvent。
分发,拦截,执行。
滑动冲突的产生,主要是因为 ,存在有多层嵌套的可滑动viewGroup,那么如果真的到了这种场景,到底应该如何响应呢?应该响应哪一层的滑动事件呢?
多层嵌套的可滑动ViewGroup,三种情况(两层嵌套内外可滑动方向一致,两层嵌套内外可滑动方向不一致,内外嵌套超过3层含3层),照理说,如果不做任何处理,程序应该会默认响应所有的滑动事件,但是事实上,这种默认的处理方式往往不是我们想要的结果。
那么,如何解决滑动冲突呢?
方法1)onInterceptorTouchEvent 外部拦截, 知道消息分发机制的人应该熟悉这个方法,它是用来拦截从外发送到内的触摸事件的,如果返回值是true,就不会往下下发消息。确保只有外层响应滑动事件,从而解决冲突。
方法2)dispathTouchEvent 内部拦截,
实际的案例,后面填补。
以上是关于Android 滑动冲突以及如何解决的主要内容,如果未能解决你的问题,请参考以下文章
Android 解决viewPager中嵌套webView的滑动冲突
Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突