Android在V4包中提供了DrawerLayout布局来实现侧边栏的效果,代替了以前老是用第三方库实现的方法。html
关于DrawerLayout网上的介绍也不少,今天咱们来实现一个基于DrawerLayout实现的Demo:java
框架结构:android
内容区域是ViewPager,里边包含Fragment,经过FragmentPageAdapter来与ViewPager关联。app
侧边栏咱们用的是LinearLayout布局,固然,也能够用ListView等其余布局代替。框架
实现过程当中遇到的一些问题记录在了Android侧边栏DrawerLayout实现问题笔记,你们能够参考下。ide
先上效果图:工具
内容区域:布局
该界面是一个只包含TextView的Fragment嵌套在ViewPager中能够左右滑动,具体扩展能够根据本身的需求。动画
左侧边栏: 右侧边栏:this
左侧边栏呼出方式:
1.经过自带的从左侧滑出
2.经过DrawerLayout与ActionBar相关联,由ActionBar左上角按钮打开/隐藏
右侧边栏呼出方式:
默认的从右侧滑出
项目结构:
这里只介绍一些关键的文件:
主布局文件activity_main.xml:
[html] view plain copy
DrawerLayout布局结构:
第一层Viewpager为主内容区域,位于Z轴最低端,被左右侧边栏呼出时覆盖。
第二层include的LinearLayout为左侧边栏
第三层LinearLayout为右侧边栏
注意,侧边栏要实现如下属性:
1.android:layout_width="320dp" 因为侧边栏不须要覆盖整个屏幕,Android文档建议最大宽度不超过320dp
2.android:layout_gravity="start" 或者android:layout_gravity="end" 分别对应左右侧边栏
主Activity MainActivity.Java:
[java] view plain copy
ActionBarDrawerToggle类为DrawerLayout侧边栏与ActionBar相关联的工具类。
ActionBarDrawerToggle 的做用:
1.改变android.R.id.home返回图标。
2.Drawer拉出、隐藏,带有android.R.id.home动画效果。
3.监听Drawer拉出、隐藏。
绑定的时候须要调用DrawerLayout的setDrawerListener(ActionBarDrawerToggle对象)