通过监听手势滑动解决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
- 通过监听手势滑动解决DrawerLayout只能边缘打开抽屉问题
- DrawerLayout 关闭手势滑动
- DrawerLayout 关闭手势滑动
- 关闭和打开Drawerlayout侧拉手势滑动的方法
- 解决DrawerLayout不能全屏滑动的问题
- 关闭DrawerLayout的手势滑动
- android 使用DrawerLayout实现滑动抽屉
- DrawerLayout手势打开侧边栏
- Android手势滑动监听
- android 手势滑动监听
- 解决DrawerLayout以及viewpager点击或者滑动后卡顿的问题
- 解决DrawerLayout的不能全屏滑动的问题
- 解决drawerlayout嵌套listview 导致listview不能滑动的问题
- iOS 导航控制器边缘滑动 全屏滑动 以及手势冲突问题
- DrawerLayout 抽屉
- DrawerLayout 抽屉
- DrawerLayout抽屉
- android手势滑动方向监听
- HTTPweb服务器——HTTP基本知识
- 【转】使用SYSTEMINFO类获取UNITY3D运行设备的各类信息(CPU类型,显卡类型等)
- Codeforces-798C-Mike and gcd problem(贪心+数论)
- Java中的异常
- org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool问题解决方案
- 通过监听手势滑动解决DrawerLayout只能边缘打开抽屉问题
- 快速排序的递归实现
- 单链表反转
- Material Design 兼容性控件学习
- 【bzoj3328】PYXFIB 题解
- HDU
- (待更新理解)(数值过大素数计数模版)HDU 5901 Count primes
- Duplicate files copied in APK META-INF/LICENSE异常冲突解决
- ACM ArabellaCPC 2015 E题.二分or离散化