Android开发之DrawerLayout的仿QQ侧滑
程序员文章站
2022-05-15 18:22:18
...
在上一篇中我们提到了监听DrawerLayout,今天就带领大家解析DrawerLayout的监听,定制属于我们自己的DrawerLayout,然后完成QQ的侧滑栏功能!
效果图如下:
----------------------------------------分割线---------------------------------------------------------------
分析:如果想实现上述效果,需要内容部分跟着侧滑栏的滑动而滑动,而默认效果是侧滑栏遮住内容部分了,所以我们要想法拿到内容部分的View,然后再获取到侧滑的偏移量,然后根据重新计算的偏移量来动态平移内容部分的View,OK来代码实现一下:
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
//滑动过程中不断回调 slideOffset:0~1
View content = drawerLayout.getChildAt(0);
View menu = drawerView;
float scale = 1 - slideOffset;//1~0
content.setTranslationX(menu.getMeasuredWidth() * (1 - scale));//0~width
}
@Override
public void onDrawerOpened(View drawerView) {
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}
});
在这里再补充一句,监听DrawerLayout还有另一个方法,是drawerLayout.setDrawerListener(new ...);在新版中这个方法已经过时,Google已经不推荐使用,这是给出的原因:This inspection reports where deprecated code is used in the specified inspection scope,翻译下来就是:本检验报告,不合法的代码在指定的检验范围。有兴趣的童靴可以仔细翻看一下代码,这里不做过多深究!
正好我们可以利用这一点做toolbar的动画效果:
drawerLayout.setDrawerListener(drawerToggle);
----------------------------分割线----------------------------------------------------------------------
今天的任务比较简单,下节课继续讲解DrawerLayout与其他控件的搭配使用!
推荐阅读
-
android基于SwipeRefreshLayout实现类QQ的侧滑删除
-
Android自定义布局实现仿qq侧滑部分代码
-
Android实现3种侧滑效果(仿qq侧滑、抽屉侧滑、普通侧滑)
-
Android_UI 仿QQ侧滑菜单效果的实现
-
Android侧滑菜单之DrawerLayout用法详解
-
Android使用DrawerLayout仿QQ6.6版侧滑效果
-
荐 DrawerLayout(侧滑栏)详解,仿QQ消息列表(置顶、删除)
-
Android使用DrawerLayout实现仿QQ双向侧滑菜单
-
Android自定义布局实现仿qq侧滑部分代码
-
Android实现3种侧滑效果(仿qq侧滑、抽屉侧滑、普通侧滑)