1.首先要先把自己工程的v4包删掉,然后关联library,因为slidingmenu的library里已经有v4包了, (会出现冲突)
2.创建实例, new Slidingmenu(getApplicationContext);
3.设置模式 setMode(SlidingMenu.LEFT); //此处有三种模式,LEFT,RIGHT,LEFT_RIGHT
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);
下面是Demo
public class MainActivity extends Activity {
private Button btn1;
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
// 创建对象
final SlidingMenu slide = new SlidingMenu(getApplicationContext());
// 设置侧滑栏的宽度
slide.setBehindWidthRes(R.dimen.left_width);
// 设置触摸模式
slide.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
// 设置侧滑栏的模式
slide.setMode(SlidingMenu.RIGHT);
slide.setFadeEnabled(true);
slide.setFadeDegree(0.7f);
slide.setShadowWidth(30);
slide.setShadowDrawable(R.color.blue1);
// Animation animation = AnimationUtils.loadAnimation(MainActivity.this,
// R.anim.aa);
// slide.setAnimation(animation);
View v = LayoutInflater.from(getApplicationContext()).inflate(
R.layout.leftmenu, null);
// 设置侧滑栏的布局或者视图
slide.setMenu(v);
v.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.e("=====", "=====");
}
});
// 将侧滑栏绑定到当前页面的activity
slide.attachToActivity(MainActivity.this, SlidingMenu.SLIDING_CONTENT);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 判断侧滑栏是否打开进行不同的操作
// if (slide.isMenuShowing()) {
slide.toggle();
// }
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 判断侧滑栏是否打开进行不同的操作
// if (slide.isMenuShowing()) {
slide.toggle();
// }
}
});
}
下面是侧滑菜单嵌套Fragment
Fragment:注意:布局一定要是Fragmelayout
public class LeftFragmentMenu extends Fragment implements OnClickListener,
OnItemClickListener {
private SlidingMenu menu;
public LeftFragmentMenu(SlidingMenu menu) {
super();
this.menu = menu;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.leftmenu, null);
v.findViewById(R.id.btnleft_frame) .setOnClickListener(this) ;
ListView lv = (ListView) v.findViewById(R.id.lv_left);
List<String> list = new ArrayList<String>();
for (int i = 1; i <50; i++) {
list.add("item" + i );
}
lv.setAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, list));
lv.setOnItemClickListener(this);
return v;
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.e("====", "====");
Toast.makeText(getActivity(), "点 ", 0).show();
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getActivity(), "点击了item"+(arg2+1) , 0).show();
menu.toggle();
}
版权声明:本文为博主原创文章,未经博主允许不得转载。