侧滑菜单与轮播图的冲突

xiaoxiao2021-02-27  113

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、在侧滑控件中的 onInterceptTouchEvent方法做处理 // 让 ViewDragHelper 决定是否拦截事件 @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if(BaseApplication.rollViewPagerTouching){ return false; } return mDragHelper.shouldInterceptTouchEvent(ev); } 搞定。 然后对于( 在侧滑菜单在打开时,由于轮播图的自定滚动导致侧滑菜单自动关闭 )这个问题的解决办法是 判断侧滑菜单的开关状态,然后在菜单打开的时候,让轮播图停止滚动。菜单关闭的时候,就让轮播图开始滚动。具体的代码就不给了,自己试着解决一下吧。
转载请注明原文地址: https://www.6miu.com/read-17110.html

最新回复(0)