1.DrawerLayout是在Android的support庫中增加了一個專門用于創建側滑菜單的組件,該組件首先在layout布局中定義,如下:
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="8dp"
android:layout_toRightOf="@+id/cyyj_image"
android:gravity="center"
android:text="我是主界面"
android:textColor="#6b6969"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:background="#ffffff"
android:layout_gravity="left"
android:layout_width="300dp"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="8dp"
android:layout_toRightOf="@+id/cyyj_image"
android:gravity="center"
android:text="我是側拉界面"
android:textColor="#6b6969"
android:textSize="14sp" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
如上面布局所示,android.support.v4.widget.DrawerLayout是側滑的控件,控件下面有兩個LinearLayout布局,其中第一個LinearLayout布局為主界面,可以在里面布置主界面的內容,第二個LinearLayout布局為側拉界面,這里需要注意的是設置 android:layout_gravity="left"屬性,表示從左側出現側拉,可以根據需求修改屬性值,寬度可以設置300dp吧,側拉界面不要全部擋住主界面,側拉界面內容可以根據需求任意發揮了。
2.代碼中使用如下
(1)獲得控件
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
(2)為控件設置監聽
drawerLayout.addDrawerListener(drawerListener);
drawerLayout.setScrimColor(Color.TRANSPARENT);//去除側滑時的陰影
(3)監聽實現
DrawerLayout.DrawerListener drawerListener = new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
// 得到contentView 實現側滑界面出現后主界面向右平移避免側滑界面遮住主界面
View content = drawerLayout.getChildAt(0);
int offset = (int) (drawerView.getWidth() * slideOffset);
content.setTranslationX(offset);
}
@Override
public void onDrawerOpened(View drawerView) {
//打開側滑界面觸發
}
@Override
public void onDrawerClosed(View drawerView) {
//關閉側滑界面觸發
}
@Override
public void onDrawerStateChanged(int newState) {
//狀態改變時觸發
}
};
(4)點擊按鈕彈出側滑界面實現
celabtn = (ImageView) findViewById(R.id.cela);//側拉菜單點擊按鈕
celabtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawerLayout.openDrawer(Gravity.LEFT);
}
});
(5)手動關閉側滑調用方法
drawerLayout.openDrawer(Gravity.LEFT);