Setup - 安裝
1. 在Eclipse里,只需要把庫引入Android library project就可以了。選擇Project->Clean動作來生成你項目所需要的二進制數據,例如R.java等。
2. 然后,把SlidingMenu添加為你項目的引用就可以了。
譯者注:添加項目引用比較麻煩,在這里說明下:
a. 下載zip包。下載地址:https://github.com/jfeinstein10/SlidingMenu。網頁打開后,下載在右邊,如圖:

b. 解壓壓縮包,然后將里面的library項目導入到你項目的工作空間。導入的方法是:New->Android->Android Project from Existing Code,選擇library項目。
c. 在你的項目上點擊右鍵,選擇Properties->Android,點擊右下方的Add Library按鈕,選擇b步驟里導入的library項目。
注意:如果你的項目里使用了support-v4包,那么完成上面3步后,可能會報錯。這是因為slidingMenu項目里使用的support-v4包與你項目里使用的support-v4包不一致造成的。將兩個包都弄成最新的錯誤即可消失。
Setup with ActionBarSherlock
1. 依照上面的步驟1、2步把ActionBarSherlock的library項目(項目不一定叫這個名字)導入你的工作空間。
2. 把ActionBarSherlock添加為SlidingMenu項目的引用。
3. 打開SlidingMenu項目的SlidingActivity Java文件,修改該類繼承SherlockActivity,而不是原來的Activity。
How to Integrate this Library into Your Projects - 如何把Library整合進你的項目
為了把SlidingMenu的Library整合進你的項目,你可以選擇以下方法中的任意一個:
1. 你可以通過new SlidingMenu(Context context)的方式把你的activity包含在一個slidingmenu里,然后調用SlidingMenu.attachToActivity(Activity activity, SlidingMenu.SLIDING_WINDOW | SlidingMenu.SLIDING_CONTENT)方法。SLIDING_WINDOW會在SlidingMenu的內容部分包含ActionBar,而SLIDING_CONTENT不會。你可以參加示例項目里的AttachExample。
2. 你可以讓你的activity繼承SlidingActivity來在activity級別上嵌入SlidingMenu。
2.1 在你Activity的onCreate()方法里,像平常一樣調用setContentView()方法,也要調用setBehindContentView()方法,它和setContentView()方法有同樣的語法結構。setBehindContentView()方法會把view放置在SlidingMenu的后面。你也可以使用getSlidingMenu()方法,這樣你就可以自定義你鏈接的slidingMenu了。
2.2 如果你想使用其它的庫,例如ActionBarSherlock,你只需要改變SlidingActivity的繼承關系,讓它繼承SherlockActivity就可以了,原來繼承的是Activity。
3. 你可以在Java代碼里用編程來使用SlidingMenu,也可以在xml布局文件里使用。
3.1 你可以把SlidingMenu當成一種其它的視圖類型,並可以把它放在一些非常棒的地方,例如ListView的行里。
3.2 我能,一切皆有可能!^_^
Simple Example - 簡單示例
public class SlidingExample extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.attach); // set the content view - 設置內容view setContentView(R.layout.content); // configure the SlidingMenu - 配置SlidingMenu SlidingMenu menu = new SlidingMenu(this); menu.setMode(SlidingMenu.LEFT); 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); menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); menu.setMenu(R.layout.menu); } }
XML Usage - xml用法
如果你決定要把SlidingMenu當作一個view,那你可以在xml文件里定義它:
<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" 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"/>
注意:你不能既使用behindOffset,又使用behindWidth。如果你這樣做,程序會拋出異常。
* viewAbove : 你想在SlidingMenu上面使用的布局的引用
* viewBehind :你想在SlidingMenu下面使用的布局的引用
* touchModeAbove :一個enum,當上面的視圖顯示時,它指定了屏幕的哪部分是可觸摸的。margin意味着只有左邊緣。fullscreen意味着整個屏幕。默認是margin。
* behindOffset :當后面的視圖顯示時,你想讓它上面的view顯示的像素尺寸。默認是0。
* behindWidth : 后面視圖寬度的尺寸。默認是屏幕的寬度(相當於behindOffset=0)。
* behindScrollScale :一個浮點值,代表了上面view滾動與下面view滾動的關系。如果被設置為0.5f,上面的view每滾動2px,后面的view滾動1px。如果被設置為1.0f,上面的view每滾動1px,后面的view也滾動1px。如果被設置為0.0f,后面的view不會滾動,也就是說它是靜態的。這是一個有趣的東東。默認是0.25f。
* shadowDrable :指向上面視圖和后面視圖落差陰影的drawable的引用。默認沒有陰影。
* shadowWidth :代表着陰影drawable寬度的尺寸。默認為0。
* shadowEnable :當SlidingMenu以非fade模式打開,在關閉時是否以fade模式關閉。
* fadeDegree :一個浮點值,代表着fade的“數量”。1.0f意味着當SlidingMenu關閉時,fade會一直存在。0.0f意味着不會有fade。
* selectorEnable :一個布爾值,標識了在上面view的左邊是否繪制一個選擇項,用於展示后面view被選擇的元素。
* selectorDrawable : 用於選擇項drawable的引用。注意:為了使得選擇項被畫出來,在被選擇的view上,你必須調用SlidingMenu.setSelectView(View v)方法。在ListView上,列表項極有可能不工作,因為Android會回收它們。
Caveats - 附加說明
你的布局必須基於viewgroup,不幸的是,這種做法違背了<merge>的最優化。
