View的事件体系(三)View的滑动冲突
2017-05-10 本文已影响46人
小柏不是大白
常见的滑动冲突场景:
1、外部滑动方向和内部滑动方向不一致
2、外部滑动方向与内部滑动方向一致
3、上面两种情况嵌套

处理规则:
对于场景1,其处理规则是:当用户左右滑动时,需要让外部的的view拦截点击事件,当用户上下滑动时,需要让内部view拦截点击事件
对于场景2、3,需要从业务上查找突破点
解决方式
1、外部拦截法
所谓外部拦截法就是指点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,不需要此事件就不拦截。这样就可以解决滑动冲突了,需重写父容器的onInterceptTouchEvent方法,在内部做出相应的拦截即可。



内部拦截法:


可看出内部拦截比外部拦截要麻烦,所以最好使用外部拦截法。