先看对比一下我们写的效果和别人的效果:
activity的xml布局:
1.根部局是DrawerLayout布局,必须设置openDrawer属性:
tools:openDrawer="start"
这个属性决定你的菜单是左边滑出还是右边
2.侧滑菜单是NavigationView布局
app:headerLayout="@layout/nav_header_main" 侧滑菜单的头部
app:menu="@menu/bottom_nav_menu" 侧滑菜单项
nav_header_main.xml:
bottom_nav_menu:
setting
准备完上面的部分我们的侧滑菜单基本完成了,运行得到如下效果:
仔细观察你会发现,我们弹出侧滑菜单的时候,右边的内容是不动的,看起来是侧滑菜单覆盖住了而已。仔细对比文章开始的效果图,你会发现右侧的内容会跟着侧滑菜单向右移动。实现这种效果也不难,在java代码中设置监听就可以实现:
//drawer滑动回调的方法
drawer.setDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
//获取屏幕的宽高
WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
//设置右面的布局位置 根据左面菜单的right作为右面布局的left 左面的right+屏幕的宽度(或者right的宽度这里是相等的)为右面布局的right
right.layout(left.getRight(), 0, left.getRight() + display.getWidth(), display.getHeight());
}
@Override
public void onDrawerOpened(View drawerView) {
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}
});
github:/David-lvfujiang/TodayHeadlinesApplication.git