在我還沒有學習Android的時候就用過側滑菜單的APP,當時第一個感覺是:哇塞,這效果不錯!當然,現在自己都已經學Android了,這效果當然也要做出來啊~
SlidingMenu是一種比較新的設置界面或配置界面的效果(我覺得已經不新了耶~),在主界面左滑或者右滑出現設置界面效果,能方便的進行各種操作。很多優秀的應用都采用了這種界面方案,像facebook、人人網、everynote、Google+等等。效果如下圖:
其實網上已經有很多寫SlidingMenu使用的文章了。不過,別人始終是別人的,下面就來實現它吧。
SlidingMenu是一個在GitHub上的一個開源庫,因此先訪問GitHub吧。
SlidingMenu地址 : https://github.com/jfeinstein10/SlidingMenu
打開網址后的界面如下:
點擊界面右下角的“Download ZIP”,即可下載該開源庫。
需要注意的是,僅僅下載該開源庫是不夠的,通過閱讀該網頁可知,SlidingMenu開源庫依賴於另一個開源庫ActionBarSherlock,因此,還需要下載開源庫ActionBarSherlock。
點擊界面中帶有超鏈接的“ActionBarSherlock”,跳轉到網址為:http://actionbarsherlock.com/的網頁,其界面如下:
點擊圖中紅色箭頭指向的“Zip”即可下載所需的開源庫ActionBarSherlock。
將這兩個開源庫下載下來后都是壓縮文件,因此需要解壓:
OK,准備工作到此結束。
開始敲代碼了……
現將這兩個開源庫添加到eclipse中,需要注意選擇導入的目錄(因為解壓后的文件有很多,並不是每一個都需要導入)。如下圖:
成功導入開源庫后,從習慣上考慮,將它們的名稱分別改為“SlidingMenulibrary”和“ActionBarSherlock”。
如圖:
現在新建一個Android工程,選擇系統為Android4.0,工程命名為“test_SlidingMenu”
接下來,把兩個開源庫添加到工程中。單擊項目工程名稱,點擊右鍵,選擇“Properties”。如圖:
(在紅色圈園處,添加這兩個開源庫)
此時,可能會出現如下錯誤:
不要慌張,出現這個錯誤是因為這兩個開源庫中使用的suppor-v4.jar包和剛才新建的工程中的suppor-v4.jar包版本不同導致的。
那么,就把工程中的suppor-v4.jar包復制到這兩個開源庫中,並替換調這兩個開源庫中的suppor-v4.jar包。這樣,三個的suppor-v4.jar包都是相同的了。
接下來剩下的就是代碼的問題了。
首先是新建一個布局文件,名為slidingmenu.xml:(我們在側滑菜單中添加了一個按鈕)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff999999" android:orientation="vertical" > <com.jeremyfeinstein.slidingmenu.lib.SlidingMenu android:id="@+id/SlidingMenu" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="00000"/> </com.jeremyfeinstein.slidingmenu.lib.SlidingMenu> </LinearLayout>
另外,在dimens.xml中添加一句代碼:
<dimen name="slidingmenu_offset">200dp</dimen>
這句代碼中的200dp的作用是設置側滑菜單拉伸的寬度。
然后就是Activity中的代碼:
(代碼比較簡單,就直接上代碼了哈)
public class MainActivity extends Activity { private SlidingMenu slidingmenu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); slidingmenu = new SlidingMenu(this); slidingmenu.setMode(SlidingMenu.LEFT);// 左邊的側滑菜單 slidingmenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//設置側滑菜單的拉伸寬度 slidingmenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 全屏觸摸有效 slidingmenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);// 附加到Activity中 slidingmenu.setMenu(R.layout.slidingmenu);//設置側滑菜單界面 } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_MENU: slidingmenu.toggle(true);//設置點擊菜單按鈕產生動畫效果。 break; default: break; } return super.onKeyDown(keyCode, event); } }
運行效果如下圖: