android中drawerlayout如何实现不覆盖主布局?

Image
怎么实现像图中这种主布局随着drawerlayout一起向右滑动不被覆盖?

阅读 10.2k
6 个回答

很简单啊,在onslide里调用settranslationx把主布局往右移即可

新手上路,请多包涵

SlidingPaneLayout

在 drawerlayout 的 监听事件里面 onDrawerSlide 方法里面 加入 linearlayoutContent.setX(slideOffset * drawerView.getWidth());
linearlayoutContent为主页面

DrawerLayout添加DrawerListener,监听onDrawerSlide方法,获取主页View。用ViewHelper控制View位移以及Alpha透明度达到View位移和渐变的效果

 DrawerLayout.DrawerListener listen = new DrawerLayout.DrawerListener() {

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            View mContent = mDrawerLayout.getChildAt(0);
            View mMenu = drawerView;
            float scale = 1 - slideOffset;
            //改变DrawLayout侧栏透明度,若不需要效果可以不设置
            ViewHelper.setAlpha(mMenu, 0.6f + 0.4f * (1 - scale));
            ViewHelper.setTranslationX(mContent,
                    mMenu.getMeasuredWidth() * (1 - scale));
            ViewHelper.setPivotX(mContent, 0);
            ViewHelper.setPivotY(mContent, mContent.getMeasuredHeight() / 2);
            mContent.invalidate();
        }

        @Override
        public void onDrawerOpened(View drawerView) {
           
        }

        @Override
        public void onDrawerClosed(View drawerView) {
           
        }

        @Override
        public void onDrawerStateChanged(int newState) {

        }
    };
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题