Android开源项目学习笔记(二)--SlidingMenu

     前面总结中多次提到过SlidingMenu,自己也对这个开源控件的使用简单的学习了一下,至于控件的编写,作为小菜的我由于水平有限,暂时没考虑去研究,先用着呗偷笑,当然要感谢这些大牛们在开源社区的贡献。废话不多说,直接看代码吧(该项目的Lib库依赖ActionBarSherlock的Lib库)

       今天主要看在PropertiesActivity这个类,因为其中几乎包含了对SlidingMenu所有属性进行设置的方式方法:

     首先,Activity要继承自SlidingFragmentActivity,而SlidingFragmentActivity又继承自SherlockFragmentActivity并实现SlidingActivityBase接口提供相应方法,这个我们先不仔细研究,只要我们的Activity继承自SlidingFragmentActivity就行了。

左侧、右侧和两边

   在BaseActivity中将SlidingMenu默认设置左面菜单,全屏可拉动及其他一些属性,下面看代码:

	
		 // 设置menu布局,根据模式决定是从左侧还是右侧拉出
		setBehindContentView(R.layout.menu_frame);
		FragmentTransaction t = this.getSupportFragmentManager()
				.beginTransaction();
		mFrag = new SampleListFragment();
		t.replace(R.id.menu_frame, mFrag);
		t.commit();
		//SlidingMenu控件的初始化
		SlidingMenu sm = getSlidingMenu();
		sm.setShadowWidthRes(R.dimen.shadow_width);//阴影宽度
		sm.setShadowDrawable(R.drawable.shadow);//阴影Drawable
		sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//拉开后离边框距离
		sm.setFadeDegree(0.35f); //颜色渐变比例
		sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); //拉动事件区域  --全屏
		getSupportActionBar().setDisplayHomeAsUpEnabled(true); //ActionBar返回启用
通过设置SlidingMenu的模式:

		// 设置左侧menu
		sm.setMode(SlidingMenu.LEFT);
		// 设置右侧menu
		sm.setMode(SlidingMenu.RIGHT);
当设置左右两侧时要注意,因为前面只添加了一个菜单布局,所以这里我们要另外再设置一个:

		// 设置左右侧都有
		sm.setMode(SlidingMenu.LEFT_RIGHT);
		// 此时要再次添加布局菜单,上一个为左侧,这个为右侧
		sm.setSecondaryMenu(R.layout.menu_frame_two);
		getSupportFragmentManager()
				.beginTransaction()
				.replace(R.id.menu_frame_two,
				   new SampleListFragment()).commit();
		sm.setSecondaryShadowDrawable(R.drawable.shadowright);

可拉动触控范围

这个更简单,不多说:
		switch (checkedId) {
		    case R.id.touch_above_full:
			// 设置触摸拖动模式--全屏
			getSlidingMenu().setTouchModeAbove(
					SlidingMenu.TOUCHMODE_FULLSCREEN);
			break;
		    case R.id.touch_above_margin:
			// 设置触摸拖动模式--边缘
			getSlidingMenu().setTouchModeAbove(
					SlidingMenu.TOUCHMODE_MARGIN);
			break;
		    case R.id.touch_above_none:
			// 设置触摸拖动模式--关闭
			getSlidingMenu().setTouchModeAbove(
					SlidingMenu.TOUCHMODE_NONE);
			break;
		}

放缩比例

// 放缩比例
				getSlidingMenu().setBehindScrollScale(
						(float) seekBar.getProgress() / seekBar.getMax());

拉出菜单宽度

// 菜单宽度(源码中作者把该操作隐藏)
				getSlidingMenu().setBehindWidth(
						(int) (percent * getSlidingMenu().getWidth()));
				getSlidingMenu().requestLayout();

阴影

有无阴影
if (isChecked)
// 是否有阴影
	getSlidingMenu()
		.setShadowDrawable(
			getSlidingMenu().getMode() == SlidingMenu.LEFT ? R.drawable.shadow: R.drawable.shadowright);
else
	getSlidingMenu().setShadowDrawable(null);

阴影宽度
// 设置阴影宽度
getSlidingMenu().setShadowWidth(width);
getSlidingMenu().invalidate();

颜色渐变

有无渐变
getSlidingMenu().setFadeEnabled(isChecked);

渐变比率
// 颜色渐变比例
getSlidingMenu().setFadeDegree(
		(float) seekBar.getProgress() / seekBar.getMax());









评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值