Android SlidingPaneLayoutは新しいQQサイドスライド効果を実現

2173 ワード



    

        
    

    

        

        

    


まずポイントはレイアウトです.FrameLayoutには2つのレイアウトがネストされています.1つ目はLinearlayoutにImageViewが入っています.このレイアウトの役割は背景です.ImageViewを置くのはスケールを設定するためです.
2つ目のレイアウトは主役のSlidingPaneLayoutです.中には2つのレイアウトが入っています.この横滑りで使えます.ここで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);
        }