通过监听手势滑动解决DrawerLayout只能边缘打开抽屉问题

来源:互联网 发布:photosynth替代软件 编辑:程序博客网 时间:2024/06/06 04:20

DrawerLayout滑动菜单是Android 5.0推出的Material Design中最常用的效果之一,这里作者就不说明DrawerLayout的基本用法,直接进入主题。

DrawerLayout使用非常方便,很多特性都给我们内部封装好了,然而,DrawerLayout有一个不便之处。当我们项目只需要打开某一边的抽屉,我们要打开抽屉,只能从边缘滑动打开,这对于用户而言,固然是一个很不好的体验。网上比较多的解决办法是通过反射的方法解决,但是仍然会有抽屉自动弹出的Bug,此处介绍另一种通过监听手势滑动解决DrawerLayout只能边缘打开抽屉问题的方法。

这里假设只打开左边抽屉,代码如下:

GestureDetector gestureDetector=new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){            @Override            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {                float offsetX=e2.getX()-e1.getX();                float offsetY=e2.getY()-e1.getY();                if ((offsetX > 0 && offsetX > Math.abs(offsetY) && Math.abs(offsetY)<=50)                        || (velocityX > 0 && velocityX > Math.abs(velocityY) && Math.abs(offsetY)<=50)) {                        return true;                }                return false;        }});

通过上面代码可知当手势有水平向右方向的滑动且垂直方向滑动距离小于50时,打开左边抽屉。此处限制垂直方向滑动距离是作者项目需要,读者不必要的话可取消。

然而,这种监听手势滑动的方法也有一点弊端,就是没有当不是从边缘开始拉出来时,没有了那种随手势缓慢拖出抽屉的动画效果。



0 0
原创粉丝点击