1、常见的滑动冲突场景
1、外部滑动方向和内部滑动方向不一致
2、外部滑动方向和内部滑动方向一致
3、上面两种情况的嵌套
2、滑动冲突的解决方式
1、外部拦截法(推荐使用)
1、重写ViewGroup的onInterceptouchEvent方法
2、不拦截Action_down、Action_up事件,否则后续的相同事件都会交给ViewGroup处理,事件无法传递到View
3、处理Action_move事件,根据情况,拦截水平滑动还是竖直滑动(依据水平方向和竖直方向上的距离差来判断是水平滑动还是竖直滑动)
2、内部拦截法
1、ViewGroup对所有事件都不拦截
2、所有事件都传递到子View,子View根据需要是否消耗事件,不消耗
则交给父容器ViewGroup进行处理,需要配合requestDisallowInterceptTouchEvent方法