<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/bg" />
</LinearLayout>
<android.support.v4.widget.SlidingPaneLayout
android:id="@+id/slidingPane"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
<FrameLayout
android:id="@+id/layout_menu"
android:layout_width="250dp"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SlidingPaneLayout>
</FrameLayout>
首先重点是布局咯
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);
}