slidingmenu使用說明

前面總結中屢次提到過SlidingMenu,本身也對這個開源控件的使用簡單的學習了一下,至於控件的編寫,做爲小菜的我因爲水平有限,暫時沒考慮去研究,先用着唄,固然要感謝這些大牛們在開源社區的貢獻。廢話很少說,直接看代碼吧(該項目的Lib庫依賴ActionBarSherlock的Lib庫) java

       今天主要看在PropertiesActivity這個類,由於其中幾乎包含了對SlidingMenu全部屬性進行設置的方式方法: git

     首先,Activity要繼承自SlidingFragmentActivity,而SlidingFragmentActivity又繼承自SherlockFragmentActivity並實現SlidingActivityBase接口提供相應方法,這個咱們先不仔細研究,只要咱們的Activity繼承自SlidingFragmentActivity就好了。 github

左側、右側和兩邊

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


設置某個控件不執行觸摸滑動事件 學習

mSlidingMenu.addIgnoredView(mViewPager);

判斷側邊菜單欄是不是彈出狀態的方法 this

mSlidingMenu.isMenuShowing()
相關文章
相關標籤/搜索