深入学习SlidingMenu 2015-06-12 20:27 856人阅读 评论(0) 收藏...

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();
	}





版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/merbn/p/4638868.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中实现滑动窗体可以使用第三方库SlidingMenuSlidingMenu是一个开源的Android库,可以让你的应用程序拥有侧滑菜单的功能。使用SlidingMenu可以轻松地实现左右两侧的侧滑菜单,同时也可以在菜单中添加Fragment等内容。具体实现步骤如下: 1. 在build.gradle文件中添加依赖:implementation 'com.jeremyfeinstein.slidingmenu:library:1.3.0@aar' 2. 在布局文件中添加SlidingMenu控件,并设置相关属性,如侧滑方向、宽度、菜单布局等。 3. 在Activity中初始化SlidingMenu,并将其附加到Activity上。 4. 可以在菜单布局中添加Fragment等内容。 示例代码如下: ``` //在build.gradle文件中添加依赖 implementation 'com.jeremyfeinstein.slidingmenu:library:1.3.0@aar' //在布局文件中添加SlidingMenu控件 <com.jeremyfeinstein.slidingmenu.lib.SlidingMenu xmlns:sliding="http://schemas.android.com/apk/res-auto" android:id="@+id/sliding_menu" android:layout_width="match_parent" android:layout_height="match_parent" sliding:viewAbove="@layout/content_frame" sliding:viewBehind="@layout/menu_frame" sliding:behindOffset="@dimen/slidingmenu_offset" sliding:behindWidth="@dimen/slidingmenu_width" sliding:touchModeAbove="margin" sliding:touchModeBehind="fullScreen" sliding:fadeEnabled="true" sliding:fadeDegree="0.35" sliding:selectorEnabled="true" sliding:selectorDrawable="@drawable/list_selector" sliding:shadowDrawable="@drawable/shadow" sliding:shadowWidth="10dp" sliding:shadowHeight="10dp" sliding:shadowOpacity="0.75" sliding:menuOffset="60dp" sliding:behindScrollScale="0.25" sliding:behindFadeDegree="0.0" sliding:mode="left"> </com.jeremyfeinstein.slidingmenu.lib.SlidingMenu> //在Activity中初始化SlidingMenu SlidingMenu menu = new SlidingMenu(this); menu.setMode(SlidingMenu.LEFT); //设置侧滑从左边画出 menu.setTouchModeBehind(SlidingMenu.TOUCHMODE_FULLSCREEN); //设置侧滑可以从全屏滑动出来 WindowManager wm = getWindowManager(); DisplayMetrics displayMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(displayMetrics); menu.setBehindWidth(displayMetrics.widthPixels / 2); //设置侧滑的宽度 menu.setFadeEnabled(false); menu.setMenu(R.layout.menu_left_layout); //设置侧滑的布局内容,可以自己创建一个布局文件随便定义里面的界面 // menu.setSecondaryMenu(R.layout.menu_right_layout); //添加依附的Activity menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); //必须添加依附的activity,就是你初始化的那个activity,否则会报错 getSupportFragmentManager().beginTransaction().replace(R.id.fragment_menu_container, new LeftMenuFragment()).commit(); //可以在侧滑里面添加一个fragment menu.showMenu(); //显示侧滑 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值