drawerlayout的侧滑效果

drawerlayout的侧滑效果

google官方提供了drawerlayout实现侧滑抽屉。但是默认滑动效果只是显示抽屉菜单,然后content的内容不动,并打上阴影。
qq实现的侧滑效果比google的默认效果更有美感。当侧滑的时候,content的内容也跟着侧滑,两者滑动速度不一样,有一种层次感。
实现这种效果主要要监听滑动,drawerlayout提供了一个监听接口,但是不知道为什么不推荐使用。。。DrawerLayout.DrawerListener。

 drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                View mContent = drawerLayout.getChildAt(0);
                View mMenu = drawerView;
                float scale = 1 - slideOffset;
//                float rightScale = 0.8f + scale * 0.2f;


                //float leftScale = 1 - 0.3f * scale;
                AnimatorSet set = new AnimatorSet();
                set.playTogether(
                        //        ObjectAnimator.ofFloat(mMenu, "ScaleX", leftScale),
                        // ObjectAnimator.ofFloat(mMenu, "ScaleY", leftScale),
//                    ObjectAnimator.ofFloat(mMenu, "Alpha", 0.6f + 0.4f * (1 - scale)),
//                    ObjectAnimator.ofFloat(mContent, "TranslationX", mMenu.getMeasuredWidth() * (1 - scale)),
                        ObjectAnimator.ofFloat(mContent, "TranslationX", mMenu.getMeasuredWidth() * (1 - scale))
//                    ObjectAnimator.ofFloat(mContent, "PivotX", 0),
//                    ObjectAnimator.ofFloat(mContent, "PivotY", mContent.getMeasuredHeight() / 2)
                );
                set.setDuration(0);
                set.start();
            }

监听接口里有这个方法onDrawerSlide(View drawerView, float slideOffset),看一下官方文档:

Paste_Image.png

drawerView就是侧滑的view(抽屉),
slideOffset就是侧滑完成的进度(0~1)
接下来就是获取content对象, View mContent = drawerLayout.getChildAt(0);获取了这俩个对象之后就可以通过属性动画来实现任何高大上的侧滑效果了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容