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);
网友评论