Android开发之DrawerLayout的仿QQ侧滑

(转载)

在上一篇中我们提到了监听DrawerLayout,今天就带领大家解析DrawerLayout的监听,定制属于我们自己的DrawerLayout,然后完成QQ的侧滑栏功能!

效果图如下:


----------------------------------------分割线---------------------------------------------------------------

分析:如果想实现上述效果,需要内容部分跟着侧滑栏的滑动而滑动,而默认效果是侧滑栏遮住内容部分了,所以我们要想法拿到内容部分的View,然后再获取到侧滑的偏移量,然后根据重新计算的偏移量来动态平移内容部分的View,OK来代码实现一下:

[java]  view plain  copy
  1. drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {  
  2.             @Override  
  3.             public void onDrawerSlide(View drawerView, float slideOffset) {  
  4.                 //滑动过程中不断回调 slideOffset:0~1  
  5.                 View content = drawerLayout.getChildAt(0);  
  6.                 View menu = drawerView;  
  7.   
  8.                 float scale = 1 - slideOffset;//1~0  
  9.                 content.setTranslationX(menu.getMeasuredWidth() * (1 - scale));//0~width  
  10.             }  
  11.   
  12.             @Override  
  13.             public void onDrawerOpened(View drawerView) {  
  14.   
  15.             }  
  16.   
  17.             @Override  
  18.             public void onDrawerClosed(View drawerView) {  
  19.   
  20.             }  
  21.   
  22.             @Override  
  23.             public void onDrawerStateChanged(int newState) {  
  24.   
  25.             }  
  26.         });  

在这里再补充一句,监听DrawerLayout还有另一个方法,是drawerLayout.setDrawerListener(new ...);在新版中这个方法已经过时,Google已经不推荐使用,这是给出的原因:This inspection reports where deprecated code is used in the specified inspection scope,翻译下来就是:本检验报告,不合法的代码在指定的检验范围。有兴趣的童靴可以仔细翻看一下代码,这里不做过多深究!

正好我们可以利用这一点做toolbar的动画效果:

[java]  view plain  copy
  1. drawerLayout.setDrawerListener(drawerToggle);  

----------------------------分割线----------------------------------------------------------------------

今天的任务比较简单,下节课继续讲解DrawerLayout与其他控件的搭配使用!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值