侧滑菜单与轮播图的冲突

来源:互联网 发布:推荐几本好看的书 知乎 编辑:程序博客网 时间:2024/06/06 16:55
1、首先,在Application文件中添加一个boolean类型的变量,用于存储用户的手势姿态,判断用户现在的手势是否触摸到了轮播图,如果触摸的是轮播图,则不去拦截事件。
  1. /**
  2. * 手指是否在轮播图上
  3. */
  4. public static boolean rollViewPagerTouching;
在oncreate方法中初始化:
  1. rollViewPagerTouching = false;
默认为false,就是没有触摸到轮播图

2、然后我们要在自己的轮播图控件中对手势进行判断
  1. /**
  2. * 事件分发
  3. */
  4. @Override
  5. public boolean dispatchTouchEvent(MotionEvent ev) {
  6. switch (ev.getAction()) {
  7. case MotionEvent.ACTION_MOVE:
  8. break;
  9. case MotionEvent.ACTION_DOWN:
  10. BaseApplication.rollViewPagerTouching = true;
  11. break;
  12. case MotionEvent.ACTION_UP:
  13. BaseApplication.rollViewPagerTouching = false;
  14. break;
  15. }
  16. return super.dispatchTouchEvent(ev);
  17. }
3、在侧滑控件中的onInterceptTouchEvent方法做处理
  1. // 让 ViewDragHelper 决定是否拦截事件
  2. @Override
  3. public boolean onInterceptTouchEvent(MotionEvent ev) {
  4. if(BaseApplication.rollViewPagerTouching){
  5. return false;
  6. }
  7. return mDragHelper.shouldInterceptTouchEvent(ev);
  8. }
搞定。

然后对于(在侧滑菜单在打开时,由于轮播图的自定滚动导致侧滑菜单自动关闭)这个问题的解决办法是

判断侧滑菜单的开关状态,然后在菜单打开的时候,让轮播图停止滚动。菜单关闭的时候,就让轮播图开始滚动。具体的代码就不给了,自己试着解决一下吧。
阅读全文
0 0
原创粉丝点击