DrawerLayout设置滑动边距

来源:互联网 发布:淘宝新开店铺采集器 编辑:程序博客网 时间:2024/04/20 10:18

////////////////////////2016/10/26/////////////////////

////////////////////////by    xbw////////////////////////


android.support.v4.widget.DrawerLayout制作的侧滑抽屉
 public static void setDrawerLeftEdgeSize(Activity activity, DrawerLayout drawerLayout, float displayWidthPercentage) {        if (activity == null || drawerLayout == null) return;        try {            Field leftDraggerField = drawerLayout.getClass().getDeclaredField("mLeftDragger");            leftDraggerField.setAccessible(true);            ViewDragHelper leftDragger = (ViewDragHelper) leftDraggerField.get(drawerLayout);            Field edgeSizeField = leftDragger.getClass().getDeclaredField("mEdgeSize");            edgeSizeField.setAccessible(true);            int edgeSize = edgeSizeField.getInt(leftDragger);            DisplayMetrics dm = new DisplayMetrics();            activity.getWindowManager().getDefaultDisplay().getMetrics(dm);            edgeSizeField.setInt(leftDragger, Math.max(edgeSize, (int) (dm.widthPixels * displayWidthPercentage)));        } catch (Exception e) {        }    }

private void initEvents() {        mDrawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {            @Override            public void onDrawerStateChanged(int newState) {            }            @Override            public void onDrawerSlide(View drawerView, float slideOffset) {                View mContent = mDrawerLayout.getChildAt(0);                View mMenu = drawerView;                float scale = 1 - slideOffset;                float rightScale = 0.8f + scale * 0.2f;                if (drawerView.getTag().equals("LEFT")) {                    float leftScale = 1 - 0.3f * scale;                    ViewHelper.setScaleX(mMenu, leftScale);                    ViewHelper.setScaleY(mMenu, leftScale);                    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();                    ViewHelper.setScaleX(mContent, rightScale);                    ViewHelper.setScaleY(mContent, rightScale);                } else {                    ViewHelper.setTranslationX(mContent,                            -mMenu.getMeasuredWidth() * slideOffset);                    ViewHelper.setPivotX(mContent, mContent.getMeasuredWidth());                    ViewHelper.setPivotY(mContent,                            mContent.getMeasuredHeight() / 2);                    mContent.invalidate();                    ViewHelper.setScaleX(mContent, rightScale);                    ViewHelper.setScaleY(mContent, rightScale);                }            }            @Override            public void onDrawerOpened(View drawerView) {            }            @Override            public void onDrawerClosed(View drawerView) {            }        });    }
mDrawerLayout = (DrawerLayout) findViewById(R.id.id_drawerLayout);        //设置滑动边距        setDrawerLeftEdgeSize(this, mDrawerLayout, 0.8f);




0 0
原创粉丝点击