参考:http://blog.youkuaiyun.com/caiwenfeng_for_23/article/details/23384775
SlidingMenu 常用属性:
menu.setMode(SlidingMenu.LEFT);//设置左滑菜单
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的屏幕范围,该设置为全屏区域都可以滑动
menu.setShadowDrawable(R.drawable.shadow);//设置阴影图片
menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度
menu.setFadeDegree(0.35f);//SlidingMenu滑动时的渐变程度
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上
menu.setMenu(R.layout.menu_layout);//设置menu的布局文件
menu.toggle();//动态判断自动关闭或开启SlidingMenu
menu.showMenu();//显示SlidingMenu
menu.showContent();//显示内容
menu.setOnOpenListener(onOpenListener);//监听slidingmenu打开
关于关闭menu有两个监听,简单的来说,对于menu close事件,一个是when,一个是after
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭时事件
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭后事件
左右都可以划出SlidingMenu菜单只需要设置
menu.setMode(SlidingMenu.LEFT_RIGHT);属性,然后设置右侧菜单的布局文件
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右侧菜单的阴影图片
设置SlidingMenu属性
sm = getSlidingMenu();
//如果只显示左侧菜单就是用LEFT,右侧就RIGHT,左右都支持就LEFT_RIGHT
sm.setMode(SlidingMenu.LEFT_RIGHT);//设置菜单滑动模式,菜单是出现在左侧还是右侧,还是左右两侧都有
sm.setShadowDrawable(R.drawable.shadow);//设置阴影的图片资源
sm.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
//sm.setBehindWidth(200);//设置菜单的宽
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的区域
支持右侧划出菜单:
//SlidingMenu可以同时支持划出左右两侧的菜单,互不冲突,而且动画优美,体验良好。
sm.setSecondaryMenu(R.layout.menu_frame2);//设置右侧菜单
sm.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右侧菜单阴影的图片资源
//右侧SlidingMenu的Fragment
getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame2, new SampleListFragment()).commit();
slidingMenu = getSlidingMenu();
//设置是左滑还是右滑,还是左右都可以滑
slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
//设置阴影宽度
slidingMenu.setShadowWidth(getWindowManager().getDefaultDisplay().getWidth() / 40);
//设置左菜单阴影图片
slidingMenu.setShadowDrawable(R.drawable.shadow);
//设置右菜单阴影图片
slidingMenu.setSecondaryShadowDrawable(R.drawable.right_shadow);
//设置菜单占屏幕的比例
slidingMenu.setBehindOffset(getWindowManager().getDefaultDisplay().getWidth() / 5);
//设置滑动时菜单的是否淡入淡出
slidingMenu.setFadeEnabled(true);
//设置淡入淡出的比例
slidingMenu.setFadeDegree(0.4f);
//设置滑动时拖拽效果
slidingMenu.setBehindScrollScale(0);
//设置要使菜单滑动,触碰屏幕的范围
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
实例参考:slidngmenu+fragment
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import com.slidingmenu.lib.SlidingMenu;
public class MainFragment extends FragmentActivity{
private Button bt_sildmenu;
private SlidingMenu mSlidingMenu ;
private MyAdapter mAdapter;
private List<String> list=new ArrayList<String>();
private Fragment1 fragment1;
private Fragment2 fragment2;
private Fragment3 fragment3;
/** fragment 管理器 */
private FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSlidingMenu = new SlidingMenu(MainFragment.this);
for(int i=0;i<10;i++){
list.add("sildmenu"+i);
}
mAdapter=new MyAdapter(list);
ListView list=new ListView(this);
list.setAdapter(mAdapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
setTabSelect(position);
mSlidingMenu.toggle();
}
});
fragmentManager = getSupportFragmentManager();
setTabSelect(0);
bt_sildmenu=(Button) findViewById(R.id.bt);
bt_sildmenu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mSlidingMenu.toggle();
}
});
//设置侧滑方向
mSlidingMenu.setMode(SlidingMenu.LEFT);
//设置全屏有效果 // 设置触摸屏幕的模式
mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
//设置偏移量 // 设置滑动菜单视图的宽度
mSlidingMenu.setBehindOffsetRes(R.dimen.sliding_menu_offse);
//设置透明度
mSlidingMenu.setFadeDegree(0.35f);
// 设置阴影宽度
mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);
//设置阴影样式
mSlidingMenu.setShadowDrawable(R.drawable.shadow);
//设置依在Activity之上
mSlidingMenu.attachToActivity(MainFragment.this, SlidingMenu.SLIDING_CONTENT);
//设置布局资源
mSlidingMenu.setMenu(list);
// mSlidingMenu.setBehindWidth(250);
}
@SuppressLint("CommitTransaction") private void setTabSelect(int index){
// 开启事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
hideFragments(transaction);
switch (index) {
case 0:
if(fragment1==null){
fragment1=new Fragment1();
transaction.add(R.id.content, fragment1);
}else{
transaction.show(fragment1);
}
break;
case 1:
if(fragment2==null){
fragment2=new Fragment2();
transaction.add(R.id.content, fragment2);
}else{
transaction.show(fragment2);
}
break;
case 2:
if(fragment3==null){
fragment3=new Fragment3();
transaction.add(R.id.content, fragment3);
}else{
transaction.show(fragment3);
}
break;
default:
break;
}
transaction.commit();
}
private void hideFragments(FragmentTransaction transaction){
if(fragment1!=null){
transaction.hide(fragment1);
}
if(fragment2!=null){
transaction.hide(fragment2);
}
if(fragment3!=null){
transaction.hide(fragment3);
}
}
private class MyAdapter extends BaseAdapter{
private List<String> list=new ArrayList<String>();
public MyAdapter(List<String> list) {
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder mHolder=null;
if(convertView==null){
convertView=LayoutInflater.from(MainFragment.this).inflate(R.layout.list_item, null);
mHolder=new ViewHolder();
mHolder.tv=(TextView) convertView.findViewById(R.id.tv);
convertView.setTag(mHolder);
}
mHolder=(ViewHolder) convertView.getTag();
mHolder.tv.setText(list.get(position));
return convertView;
}
}
private class ViewHolder{
private TextView tv;
}