SlidingMenu控件的使用方法

slidingmenu是一個很是流行的開源組件,能夠實現側滑菜單的效果.

下面來說解下怎麼使用,集成的方式有3種方式.

1. 經過編程的方式把Activity包裝進SlidingMenu裏,以下所示:
                           java

menu = new SlidingMenu(this);
// 設置SlidingMenu各類屬性                            
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowWidthRes(R.dimen.shadow_width);             
menu.setShadowDrawable(R.drawable.shadow);                
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);      
menu.setFadeDegree(0.35f);

//把Activity附着到SlidingMenu                               
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

//設置側邊的菜單的layout
menu.setMenu(R.layout.menu_frame);


附着到SlidingMenu時,能夠選擇如下兩種方式之一
SlidingMenu.SLIDING_WINDOW, 表示SlidingMenu(也即底層視圖Behind View)滑出時,內容Activity(也即上層視圖Above View)的Title或ActionBar會滑向一側. 或者也能夠這麼理解:當SlidingMenu滑出時,連帶它的title/ActionBar也會一塊兒滑出,把Activity的title/ActionBar會擠向一邊.這種方式是最多見的方式.
SlidingMenu.SLIDING_CONTENT, 表示當SlidingMenu滑出時,內容Activity的Title或ActionBar不會動,或者也能夠說SlidingMenu根本就沒有title/ActionBar.          

這種集成的方式能夠參考Example示例裏的AttachExample.java

2. 經過咱們的Activity繼承SlidingActivity,直接把SlidingMenu嵌進來.
在咱們的onCreate方法裏,除了經過調用setContentView,還須要調用setBehindContentView,它將設置側滑出的Menu視圖的Layout,而後就能夠經過父類的getSlidingMenu獲得SlidingMenu, 而後自定義或設置它的屬性.以下所示:
public class BaseActivity extends SlidingFragmentActivity{
//...
public void onCreate(Bundle savedInstanceState) {
//....
// customize the SlidingMenu                             
SlidingMenu sm = getSlidingMenu(); //經過父類的getSlidingMenu獲得SlidingMenu                      
sm.setShadowWidthRes(R.dimen.shadow_width);              
sm.setShadowDrawable(R.drawable.shadow);                 
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);       
sm.setFadeDegree(0.35f);                                 
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);  
//...
}

這種集成的方式能夠參考Example示例裏的BaseActivity.java

3. 咱們能夠把SlidingMenu看做是一種View,直接在經過XML Layout來定義它(或用純JAVA代碼來定義也行), 而後能夠把它放在它你想要放的地方.
以下所示,經過XML定義SlidingMenu:
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
    xmlns:sliding="http://schemas.android.com/apk/res-auto"
    android:id="@+id/slidingmenulayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    sliding:viewAbove="@layout/YOUR_ABOVE_VIEW" <!--這裏放上層的內容視圖-->
    sliding:viewBehind="@layout/YOUR_BEHIND_BEHIND" <!--這裏放底下的Menu視圖-->
    sliding:touchModeAbove="margin|fullscreen" <!--只在邊緣滑動時調出菜單,仍是全屏滑動時均可以調出菜單-->
    sliding:behindOffset="@dimen/YOUR_OFFSET"
    sliding:behindWidth="@dimen/YOUR_WIDTH"
    sliding:behindScrollScale="@dimen/YOUR_SCALE"
    sliding:shadowDrawable="@drawable/YOUR_SHADOW"
    sliding:shadowWidth="@dimen/YOUR_SHADOW_WIDTH"
    sliding:fadeEnabled="true|false"
    sliding:fadeDegree="float"
    sliding:selectorEnabled="true|false"
    sliding:selectorDrawable="@drawable/YOUR_SELECTOR"/>





有空全部屬性的詳細說明請參考:https://github.com/jfeinstein10/slidingmenu

SlidingMenu若是要使用ActionBarSherlock提供的Actionbar功能, 只要修改lib包中各SlidingActivity們extend Sherlock___Activity而不是___Activity.好比:public class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase.


附帶的DEMO源碼分析:
最好先下載安裝DEMO APP,而後體驗下效果,再來讀源碼效果會很好.


程序入口Activity是ExampleListActivity.這個類繼承了SherlockPreferenceActivity,而且使用偏好設置的

方式組織程序的功能:
this.addPreferencesFromResource(R.xml.main);

重寫onPreferenceTreeClick(PreferenceScreen screen, Preference pref)方法,當點擊某項功能時,根據偏

好的title獲得要啓動的Activity的類,而後把它包裝在Intent中,最後startActivity啓動這個Activity. android


Class<?> cls = null;
        String title = pref.getTitle().toString();
        if (title.equals(getString(R.string.properties))) {
            cls = PropertiesActivity.class;    
        } else if (title.equals(getString(R.string.attach))) {
            cls = AttachExample.class;

        Intent intent = new Intent(this, cls);
        startActivity(intent);
        return true;
AttachExample演示了經過代碼menu = new SlidingMenu(this)的最基本的方式使用SlidingMenu的方法. BaseActivity是多個例子Activity的基類,定義了基本的Behind View及設置了SlidingMenu的一些屬性,但有很 重要的一點的它沒有定義Above View,由於Above View表示的是內容界面,是留給子類來實現的,子類有這些: FragmentChangeActivity PropertiesActivity LeftAndRightActivity,演示左右兩邊均可滑出菜單功能 SlidingContent,演示只滑動內容界面功能//setSlidingActionBarEnabled(false); SlidingTitleBar,演示可滑動ActionBar標題功能//setSlidingActionBarEnabled(true); ViewPagerActivity,演示結合ViewPager的使用方法,這在新聞類應用中很是常見,與網易新聞相似. com.jeremyfeinstein.slidingmenu.example.anim這個包演示了滑出菜單時動畫效果的設置,可安裝DEMO APP 體驗下效果. 以上就是SlidingMenu最多見的功能與方法,細枝末節的地方可直接參考源碼.
相關文章
相關標籤/搜索