Android Studio SlidingMenu 开源项目使用案例
Android SlidingMenu 开源项目使用
1. SlidingMenu简介:
SlidingMenu是一个强大的侧边栏导航框架:
是目前比较流行的设置主界面或配置界面界面的UI显示,在主界面左滑或者右滑出现
设置界面,能方便的进行菜单各种操作。
目前主流 App 的导航栏一般有两种:
一种是:主界面上面 3-4 个 Tab 下面搭配 ViewPager +Fragment,
另一种就是:侧边栏(如知名app 网易新闻,知乎等等这些app都使用侧边栏导航)。所以主导航超过 3 个 Tab 时,建议使用侧边
栏作为 App 的主导航。
SlidingMenu 是一个强大的侧边栏导航框架,并且已经被一些比较牛的 App 使用
主要特点如下:
(1) 侧边栏可以是一个 Fragment,包含任何 View
(2) 使用简单方便,支持左滑和右滑等
(3) 自定义侧边栏显示动画
2.SlidingMenu 总体由三个主要的类组成:
(1) SlidingMenu 继承自 RelativeLayout,对外暴露 API 给用户,同时在添加 CustomViewAbove 和 CustomViewBehind
(2) CustomViewAbove 继承自 ViewGroup,主要用来处理触摸屏事件
(3) CustomViewBehind 继承自 ViewGroup,主要用来配置参数
,显示侧边栏的
Menu 部分
3.SlidingMenu 常用属性介绍:
menu.setMode(SlidingMenu.LEFT);如果只显示左侧菜单就是用LEFT,右侧就RIGHT,左右都支持就LEFT_RIGHT
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置为全屏区域都可以滑动
menu.setShadowDrawable(R.drawable.shadow);//设置阴影图片
menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu滑出时主页面显示的剩余宽度
menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度
menu.setFadeDegree(0.35f);//SlidingMenu滑动时的渐变程度
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上
menu.setMenu(R.layout.menu_layout);//设置menu的布局文件
menu.toggle();//动态判断自动关闭或开启SlidingMenu
menu.showMenu();//显示SlidingMenu
menu.showContent();//显示内容
menu.setOnOpenListener(onOpenListener);//监听slidingmenu打开时,【这个方法对右边的slidingmenu是无效的】
slidingMenu.setOnOpenedListener(OnOpenedListener);//监听slidingmenu完全打开
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭时事件
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭后事件
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右侧菜单的阴影图片
4.SlidingMenu 实例:
SlidingMenu
开源项目 github地址:https://github.com/jfeinstein10/SlidingMe
在gitHub 下载下来后,主要使用的 SlidingMenu项目 的 library 部分
很多老教程SlidingMenu都是基于ActionBarSherlock库才可运行,而在现最新的android studio下是不需要那样的
而且不用直接引入library的新用法。
新建实例测试工程,新建文件夹 libslidingmenu。拷贝开源项目上图红色标注的library 库中 src\com\jeremyfeinstein\slidingmenu\lib 下所有文件到
新建文件夹 libslidingmenu 中,修改对应的包名和引入路径即可
如下图:
Test 实例详解:
1. 首先MianActivity需要继承自libslidingmenu app 包下的SlidingFragmentActivity
2. MianActivity setContentView(R.layout.content_frame);//该layout为一个全屏的FrameLayout
3. setBehindContentView(R.layout.menu_frame);//设置SlidingMenu使用的布局,同样是一个全屏的FrameLayout
必须使用FrameLayout 的布局,整个界面被当成一块空白备用区域 ,布局新添加元素可以覆盖之前的子元素
布局代码如下:
frame_content.xml
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/content"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
frame_left_menu.xml
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/menu"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
MainActivity 继承 SlidingFragmentActivity 代码:
主要实现的是左侧侧滑功能,设置leftmenu 主要代码如下
LeftFragment 实现一个listView 主要代码如下:
build 文件如下:
实现完成的效果如下: