我们这里的冲突不是说在侧滑菜单在打开时,由于轮播图的自定滚动导致侧滑菜单自动关闭。
指的是用手指滑动轮播图的时候,你会发现,有时候是轮播图在滑动,有时候又是打开了侧滑菜单。今天我们就来解决这个问题吧。
1、首先呢,我们在Application文件中添加一个boolean类型的变量,用于存储用户的手势姿态,判断用户现在的手势是否触摸到了轮播图,如果触摸的是轮播图,则不去拦截事件。
/**
* 手指是否在轮播图上
*/
public static boolean rollViewPagerTouching;
在oncreate方法中初始化:
rollViewPagerTouching = false;
默认为false,就是没有触摸到轮播图
2、然后我们要在自己的轮播图控件中对手势进行判断
/**
* 事件分发
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_DOWN:
BaseApplication.rollViewPagerTouching = true;
break;
case MotionEvent.ACTION_UP:
BaseApplication.rollViewPagerTouching = false;
break;
}
return super.dispatchTouchEvent(ev);
}
3、在我们的DragLayout(主页面)中的
onInterceptTouchEvent方法做处理
// 让 ViewDragHelper 决定是否拦截事件
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(BaseApplication.rollViewPagerTouching){
return false;
}
return mDragHelper.shouldInterceptTouchEvent(ev);
}
OK ,搞定了。
然后对于(
在侧滑菜单在打开时,由于轮播图的自定滚动导致侧滑菜单自动关闭
)这个问题的解决办法是
判断侧滑菜单的开关状态,然后在菜单打开的时候,让轮播图停止滚动。菜单关闭的时候,就让轮播图开始滚动。具体的代码就不给了,自己试着解决一下吧。