1.工程截图
2.主要代码
MainActivity.java
package com.example.slidingpane;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.widget.SlidingPaneLayout;
import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.FrameLayout;
public class MainActivity extends Activity {
private SlidingPaneLayout slidingPaneLayout;
private MenuFragment menuFragment;
private ContentFragment contentFragment;
private DisplayMetrics displayMetrics = new DisplayMetrics();
private int maxMargin = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
setContentView(R.layout.slidingpane_main_layout);
slidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.slidingpanellayout);
menuFragment = new MenuFragment();
contentFragment = new ContentFragment();
FragmentTransaction transaction = getFragmentManager()
.beginTransaction();
transaction.replace(R.id.slidingpane_content, contentFragment);
transaction.replace(R.id.slidingpane_menu, menuFragment);
transaction.commit();
maxMargin = displayMetrics.heightPixels / 10;// 主界面往下拉的比例
// PanelSlideListener ?
slidingPaneLayout.setPanelSlideListener(new PanelSlideListener() {
@Override
public void onPanelSlide(View panel, float slideOffset) {
// TODO Auto-generated method stub
int contentMargin = (int) (slideOffset * maxMargin);
// 默认显示的第一屏
FrameLayout.LayoutParams contentParams = contentFragment
.getCurrentViewParams();
// 未滑动时contentMargin=0 充满屏幕,
contentParams.setMargins(0, contentMargin, 0, contentMargin);
contentFragment.setCurrentViewPararms(contentParams);
// 在滑动过程中slideOffset从0到1变化,menuFragment.getCurrentView()视图对应从0到1边变化,
// 这里调整到从08到1变化,和QQ侧滑效果相似
float scale = 0.8f + slideOffset * 0.2f;
setTitle("slideOffset:" + slideOffset + "**scale:" + scale);
menuFragment.getCurrentView().setScaleX(scale);// 设置缩放的基准点
menuFragment.getCurrentView().setScaleY(scale);// 设置缩放的基准点
menuFragment.getCurrentView().setPivotX(0);// 开始缩放的起始位置
// 屏幕最左边的中间开始
menuFragment.getCurrentView().setPivotY(
displayMetrics.heightPixels / 2);
menuFragment.getCurrentView().setAlpha(slideOffset);
}
@Override
public void onPanelOpened(View panel) {
// TODO Auto-generated method stub
}
@Override
public void onPanelClosed(View panel) {
// TODO Auto-generated method stub
}
});
}
}
ContentFragment.java
package com.example.slidingpane;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
public class ContentFragment extends Fragment {
private View currentView;
public void setCurrentViewPararms(FrameLayout.LayoutParams layoutParams) {
currentView.setLayoutParams(layoutParams);
}
public FrameLayout.LayoutParams getCurrentViewParams() {
return (LayoutParams) currentView.getLayoutParams();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
currentView = inflater.inflate(R.layout.slidingpane_content_layout,
container, false);
return currentView;
}
}
MenuFragment.java
package com.example.slidingpane;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class MenuFragment extends Fragment implements View.OnClickListener {
Context context;
private View currentView;
private Button bt1, bt2, bt3, bt4, bt5, bt6;
public View getCurrentView() {
return currentView;
}
public MenuFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
currentView = inflater.inflate(R.layout.slidingpane_menu_layout,
container, false);
bt1 = (Button) currentView.findViewById(R.id.bt1);
bt2 = (Button) currentView.findViewById(R.id.bt2);
bt3 = (Button) currentView.findViewById(R.id.bt3);
bt4 = (Button) currentView.findViewById(R.id.bt4);
bt5 = (Button) currentView.findViewById(R.id.bt5);
bt6 = (Button) currentView.findViewById(R.id.bt6);
bt1.setOnClickListener(this);
bt2.setOnClickListener(this);
bt3.setOnClickListener(this);
bt4.setOnClickListener(this);
bt5.setOnClickListener(this);
bt6.setOnClickListener(this);
return currentView;
}
@Override
public void onClick(View v) {
}
}
3.效果图