前面總結中屢次提到過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()