滑动关闭由MenuDrawer生成的侧滑菜单

MenuDrawer提供了closeMenu()这个函数,可以直接调用该函数,关闭侧滑菜单:view.closeMenu();由于我生成的侧滑菜单里面嵌套了ViewPager,所以我需要在ViewPager处于第一个页面并且往左滑动(此时手往右滑动)的时候,调用这个方法。

关于ViewPager的滑动事件监听,在这儿不做详细的解释。我们在onPageScrollStateChanged(int status) 的status等于1(ViewPager正在滑动)的时候,在onPageScrolled(int position, float percent, int px) 里执行以下代码:

if(isScrolling == true){
    if(lastValue > px){
        right = true;
        left = false;
    }else if(lastValue < px){
        right = false;
        left = true;
    }else if(lastValue == px && px == 0){
        right = left = false;
    }
}
lastValue = px;

其中的px是指页面滑动的时候,移动的像素值,如果像素值为递增,则页面往右边滑动,反正,如果像素值为递减,则页面往左边滑动。当页面处于第一个页面,并且往左滑动的时候,由于是第一个页面,所以此时ViewPager是无法滑动的,即right = left = false 。那么,我们将标识位赋为true:

if(position == 0 && right == false && left == false){
    close = true;
    System.out.println("clsoe is true");
}else {
    close = false;
    System.out.println("clsoe is false");
}

其中的position标识的是当前ViewPager所处的页面,0表示第一个页面。

如果在满足条件position == 0 && right == false && left == false 的时候立即执行关闭菜单的操作,并且此时手指并未离开屏幕,那么关闭菜单的操作仍旧会触发ViewPager的滑动事件,而且此时如果继续滑动手指,ViewPager的滑动事件会一直存在。当再次打开的侧滑菜单的时候,由此带来的影响很可能会将菜单的Viewpager变为第二个页面。而且如果一旦满足条件就关闭菜单,有可能会因为产生误操作而关闭菜单,影响用户体验。所以我们需要在所有的滑动操作已经完成,即onPageScrollStateChanged(int status) 的status等于0的时候,再执行关闭菜单的操作。

关闭侧滑菜单的操作为:

if(status == 0 && close == true){
    close = false;
//  System.out.println("close is false");
    view.closeMenu();
    MainActivity main = (MainActivity) context;
    main.menu_open = 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值