简介
Navigation Drawer是在 Material Design 中推出的一种侧滑导航菜单栏控件。包含两个部分,一部分是侧滑(DrawerLayout),一部分是导航菜单栏(NavigationView)。
AS新建
利用Android Studio可以快速建立这个控件
- 在新建项目时,在最后选择Navigation Drawer Activity

- 在新建Activity时,选择Navigation Drawer Activity

DrawerLayout
DrawerLayout布局中,由两部分组成,一部分是内容布局,一部分是侧滑菜单布局。其中侧滑菜单布局通过设置 “android:layout_gravity” 属性,来控制是左侧滑,还是右侧滑。参考实例代码
| 1 | <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" | 
至此,侧滑效果就实现了。

DrawerLayout中也有一些常会用到的方法,来控制例如打开、关闭菜单,监听滑动事件等,这里暂时列举一些,还是得多看api和源码。
| 1 | //打开左侧菜单,同理右侧就是 GravityCompat.END | 
NavigationView是兼容包中提供用来实现导航菜单控件。使用menu资源填充数据,可以更简单高效的实现导航菜单。
添加依赖
| 1 | compile 'com.android.support:design:24.1.0' | 
布局中引用
| 1 | <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" | 
NavigationView分为两部分,一部分是headerLayout,一部分是menu。headerLayout就是对应菜单的顶部部分,一般用来显示用户信息什么的,menu则对应实际的菜单选项。
定义headerLayout
| 1 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | 
| 1 | <menu xmlns:android="http://schemas.android.com/apk/res/android"> | 
这样NavigationView就添加成功,效果如下:

直接使用 NavigationView 的 setNavigationItemSelectedListener() 方法即可
| 1 | navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { | 
总结
Navigation Drawer的用法还是比较简单的,但是NavigationView的封装性太高,个人觉得不是特别实用,相对自己定义界面可能来的比较方便,或许是自己用的不到家。
关于抽屉效果,个人觉得目前而言随着手机的屏幕越来越大,导致用户操作起来不是很方便,现在主流的设计还是底部导航栏。
