Android侧滑菜单_DrawerLayout

Google在Android3.0后推出的侧滑抽屉控件, 遵守MaterialDesign设计, 推荐Toolbar以及Actionbar配合开发.

DrawerLayout 作为根ViewGroup使用: 被属性android:layout_gravity=”start” 修饰的子容器就是是侧滑抽屉内容, 抽屉的宽度为dp值, ,Google建议不超过320, 使抽屉划出时主页面可见

Main_activity:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>ce
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
// Activity需要显示的内容
</RelativeLayout>
// 我在这里将侧滑抽屉分离出去了
<include layout="@layout/sliding_menu_main"/>
</android.support.v4.widget.DrawerLayout>

sliding_menu_main

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp" // 抽屉宽度, Google推荐不少于320dp, 保持主页面可见
android:layout_height="match_parent"
android:layout_gravity="start" // 此处控制侧滑方向
android:background="@color/background"
android:orientation="vertical">
// 侧滑抽屉需要显示内容
</LinearLayout>

关联Toolbar

菜单图标

toolbar上面可以添加一个按钮和drawerLayout关联

添加图标

1
2
ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, mDrawer, mToolbar, R.string.open, R.string.close);
drawerToggle.syncState();

图标同步动画

1
mDrawer.addDrawerListener(drawerToggle);

监听器

展开和隐藏监听器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
drawerMenu.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}
@Override
public void onDrawerOpened(View drawerView) {
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}
});

常用设置

隐藏与展开侧滑抽屉

1
2
3
4
5
6
// GravityCompat是Gravity后面推出的兼容类, 详情见START和LEFT区别
mDrawerMain.openDrawer(GravityCompat.START);
mDrawerMain.closeDrawer(Gravity.LEFT);
// 设置抽屉划出主页面的遮罩颜色
drawerLayout.setScrimColor(Color.TRANSPARENT);