前幾天一直想做一個側滑菜單的效果,在網上查了一些資料後,決定用drawerlayout來實現這個功能,不說廢話,先上圖:
效果圖:
這其實是一個很簡單的效果,主頁一個按鈕,點擊後菜單會從左側划過來,當然,用手指從左側邊緣劃過,也能把菜單滑出來。
實現方式:
實現方式其實非常簡單,首先,佈局文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btnOpenMenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打開側滑菜單" />
</LinearLayout>
<TextView
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#9acf9a"
android:gravity="center"
android:text="這裏是菜單佈局" />
</android.support.v4.widget.DrawerLayout>
這裏需要說明一下的是,google官方對佈局文件的要求是:
- DrawerLayout的第一個子view必須是主頁內容。
- 第一個子view的寬和高的屬性值必須爲match_parent
- 抽屜內容(菜單)必須要用gravity,也就是layout_gravity屬性,這裏用start,表示從左到右
- 抽屜菜單的寬度不能超過320dp
當完成這一步後,不需要在MainActivity
文件裏面寫任何代碼,就已經有滑動菜單的效果了,是不是很簡單。當然,如果你要在ActionBar裏面加一個列表的按鈕圖標,你就可以給這個按鈕設置一個點擊事件,當點擊這個按鈕後,菜單側滑出來,實現方法非常簡單,只需要一行代碼,具體的實現步驟如下:
private Button btnOpenMenu;
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnOpenMenu = (Button) findViewById(R.id.btnOpenMenu);
drawer = (DrawerLayout) findViewById(R.id.drawer);
btnOpenMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawer.openDrawer(Gravity.LEFT);
}
});
}
就一個drawer.openDrawer(Gravity.LEFT);
就可以搞定了,是不是很簡單。
當然,你也可以設置一個從右向左滑動的菜單,佈局文件裏面把layout_gravity的值設置爲end就行了,按鈕側滑方法當然就是drawer.openDrawer(Gravity.RIGHT);
,是不是很簡單,快去感受一下吧。