欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android使用DrawerLayout仿QQ6.6版侧滑效果

程序员文章站 2022-03-08 13:17:15
一讲到侧滑菜单,我相信大家都会想到一个开源控件slidingmenu,在google还没有出来drawerlayout的时候几乎都是使用slidingmenu来实现侧滑效果...

一讲到侧滑菜单,我相信大家都会想到一个开源控件slidingmenu,在google还没有出来drawerlayout的时候几乎都是使用slidingmenu来实现侧滑效果,可以说是效果很不错,自从google出了drawerlayout以后很多公司就使用了drawerlayout比如 滴滴打车等等。那么今天我们利用drawerlayout来实现qq6.6最新的侧滑效果。首先来看看drawerlayout默认的效果:

Android使用DrawerLayout仿QQ6.6版侧滑效果

和目前最新版的qq的侧滑还是不一样的区别就是内容页面没有跟随向右滑动,而是菜单直接覆盖在内容上,来看一张qq的样式图

Android使用DrawerLayout仿QQ6.6版侧滑效果

这样大家可以看到区别了,其实我们只要在滑动左面菜单的时候让内容页面跟随滑动就行了,首先我们看看drawerlayout有没有给我们监听滑动的监听,哈哈,翻了一下源码我们找到了这个方法 ondrawersize方法;只要实现setdrawerlistener回调就行了代码如下:

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) { 
         
      } 
    }); 

然后在看看我们改变的效果吧:

Android使用DrawerLayout仿QQ6.6版侧滑效果

是不是有那么点意思了呢,哈哈,今天就开到这里了。

最后附上源码:https://github.com/dalong982242260/drawlayoutmenu

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。