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) &