android开发:使用DrawerLayout仿快手侧滑菜单栏

先看对比一下我们写的效果和别人的效果:

        

 

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:https://github.com/David-lvfujiang/TodayHeadlinesApplication.git

你可能感兴趣的:(android,design控件)