Android项目中使用侧滑菜单栏功能的有很多量级很大的APP,比如QQ、OFO、Mobike等,所以该功能属于较为常见的、用户熟悉的功能,因此可以在任意的项目中使用。我之前就用开源库SlidingMenu实现过侧滑菜单栏,尽管SlidingMenu已经很久没有维护了,我还是打算用它来实现,毕竟轻车熟路能避免很多坑,同时网上的经验也能帮助我使用的更加轻松。
使用SlidingMenu开源库的第一步肯定是下载该开源库,但是不推荐直接下载该原始开源库。因为很久没有维护了,互联网发展又很迅速,该库已经有些不满足日新月异的需求,所以需要我们自己修改源代码,满足需求。
优化后的开源库下载地址(https://download.csdn.net/download/qq941263013/10551527)
注:文章末尾附项目源码下载地址(内含优化后的开源库)
优化的功能:
1.实现沉浸式状态栏;
(方法:https://blog.csdn.net/qq941263013/article/details/81112192)
2.为侧滑剩余部分添加淡入淡出的阴影;
(方法:https://blog.csdn.net/qq941263013/article/details/81112095)
注:①关于网上说的按钮点击无效问题,亲测不存在此类问题,需要注意的是
传入的View和实现点击事件的View要使用相同的实例。
②导入报错等问题,百度解决即可,就不在这里一一赘述了。
效果展示
主要展示了通过手势左滑(右滑)展示菜单栏、通过点击按钮展示左滑(右滑)菜单栏、FragmentTabHost的切换、侧滑菜单栏的点击事件(切换Fragment)、返回键关闭侧滑菜单栏、侧滑菜单栏的沉浸式效果、侧滑剩余部分的阴影效果等。
SlidingMenu的使用
1.导入优化后的开源库SlidingMenuLibrary;
2.因为侧滑菜单栏需要实现沉浸式效果,所以首先需要SlidingMenu依赖的Activity也实现
沉浸式状态栏效果(4.4以上);在onCreate()中添加以下代码即可:
//判断当前设备版本号是否为4.4以上,如果是,则通过调用setTranslucentStatus让状态栏变透明
//透明状态栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
window.setFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
3.初始化SlidingMenu实现侧滑菜单栏,代码中的注释非常详细,在这里直说几个重要的点。
①菜单栏的呈现模式分为三种:左、右、左右;如果设置为左右模式,则必须实现setSec