首先要引入SlidingMenu的库文件的类库,不能直接导入jar包。然后 Activity继承SlidingFragmentActivity。
public class SlidingMenuActivity extends SlidingFragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//给抽屉设置布局
setBehindContentView(R.layout.menu_frame);
FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
ft.replace(R.id.menu_frame, new SildingFragment());
ft.commit();
//用SlidingMenu把fragment隐藏
final SlidingMenu sm = getSlidingMenu();
//SlidingMenu划出时主页面显示的剩余宽度
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
//设置阴影的宽度
sm.setShadowWidthRes(R.dimen.shadow_width);
//sm.setBehindScrollScale(0.25f);
//SlidingMenu滑动时的渐变程度
sm.setFadeDegree(0.35f);
//滑动的模式TOUCHMODE_FULLSCREEN全屏可滑动
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
setContentView(R.layout.item_pull);
Button bt=(Button) findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//点击显示抽屉调用这个方法就行了(开源框架自带方法)
toggle();
}
});
}
}
fragment代码:
public class SildingFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = View.inflate(getActivity(), R.layout.fragment,null);
TextView tv=(TextView) v.findViewById(R.id.tv);
tv.setText("底层");
return v;}
}
在values中的dimens.xml文件中添加:
<resources>
<dimen name="slidingmenu_offset">150dp</dimen>
<dimen name="list_padding">10dp</dimen>
<dimen name="shadow_width">15dp</dimen>
<integer name="num_cols">1</integer>
</resources>
先简单记下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);//右侧菜单的阴影图片
1 初始化Slidingmenu:
SlidingMenu menu = getSlidingMenu();
2 setMode //设置滑动模式
设置是左滑还是右滑,还是左右都可以滑
menu.setMode(SlidingMenu.LEFT);//设置左滑菜单
menu.setMode(SlidingMenu.LEFT_RIGHT);//设置左右都可滑动
menu.setMode(SlidingMenu.TOUCHMODE_NONE);//不能手势滑动
3 设置SlidingMenu阴影
menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右侧菜单阴影的图片资源
menu.setShadowDrawable(R.drawable.shadow);//设置左侧菜单阴影图片
4 设置SlidingMenu边框距离
menu.setBehindOffsetRes();//SlidingMenu滑出时距离边框的剩余宽度
menu.setBehindOffset(getWindowManager().getDefaultDisplay().getWidth() / 5);
// getWindowManager().getDefaultDisplay().getWidth() / 5 表示 距离屏幕宽度 1/5
5 设置SlidingMenu渐变
menu.setFadeEnabled(true);/是否有渐变
menu.setFadeDegree(0.35f);//设置渐变比率
6 设置SlidingMenu布局
//给抽屉设置布局
setBehindContentView(R.layout.silding);
FragmentTransaction ft1=getSupportFragmentManager().beginTransaction();
ft1.replace(R.id.fll, new SildingFragment());
ft1.commit();
设置布局有3个方法 :
setContentView(R.layout.main); //设置slidingmenu中间的布局
setBehindContentView(R.layout.main_menu_frame);//设置左侧的布局
sm.setSecondaryMenu(R.layout.main_menu_frame_two);//设置右侧的布局
使用的是左右两侧 我一般设置为 fragment
getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame,messageFragment).commit();
表示为替换 fragment
7 设置SlidingMenu滑动的拖拽效果
slidingMenu.setBehindScrollScale(0);
8 设置SlidingMenu判断打开状态 并 自动关闭或开启
menu.toggle();
如果SlidingMenu 它是open的,它会被关闭,反之亦然。
9 设置SlidingMenu触碰屏幕的范围
menu.setTouchModeBehind(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
设置菜单滑动,触碰屏幕的范围setTouchModeAbove
10 设置SlidingMenu关闭器监听
监听主要分2种 open 和 close
open:
menu.setOnOpenedListener(onOpenListener);//监听slidingmenu打开之后调用
menu.setOnOpenListener(onOpenListener);//监听slidingmenu打开时调用
close:
两个监听器 注意看了 一个是 closed 一个是 close
menu.setOnClosedListener(listener);
menu.setOnCloseListener(listener);
这两个的区别就是
menu.OnCloseListener(OnClosedListener);//监听Slidingmenu关闭时事件
menu.OnClosedListener(OnClosedListener);//监听Slidingmenu关闭后事件
11 设置SlidingMenu是否淡入/淡出
menu.setFadeEnabled(true);
12 其它
menu.showMenu();//显示SlidingMenu
menu.showContent();//显示内容
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上
menu.setMenu(R.layout.menu);//设置menu的布局文件