Android SlidingPaneLayout 实现新版 QQ 侧滑效果



    

        
    

    

        

        

    

首先重点是布局咯
FrameLayout 里面嵌套了两个布局
第一个是 LinearLayout 里面放了个 ImageView
这个布局的作用就是背景,用放 ImageView 就是为了可以设置缩放

第二个布局就是主角 SlidingPaneLayout 咯
里面放两个布局了这个侧滑就可以用了
这里用 FrameLayout 是为了可以用 Fragment
核心代码

        @Override
        public void onPanelSlide(View panel, float slideOffset) {
            int contentMargin = (int) (slideOffset * maxMargin);
            FrameLayout.LayoutParams contentParams = contentFragment
                    .getCurrentViewParams();

            contentParams.setMargins(0, contentMargin, 0, contentMargin);
            contentFragment.setCurrentViewPararms(contentParams);

            float scale = 1 - ((1 - slideOffset) * maxMargin * 2)
                    / (float) displayMetrics.heightPixels;
            menuFragment.getCurrentView().setScaleX(scale);// 设置缩放的基准点
            menuFragment.getCurrentView().setScaleY(scale);// 设置缩放的基准点
            menuFragment.getCurrentView().setPivotX(0);// 设置缩放和选择的点
            menuFragment.getCurrentView().setPivotY(
                    displayMetrics.heightPixels / 2);
            menuFragment.getCurrentView().setAlpha(slideOffset);
        }

你可能感兴趣的:(android)