DrawerLayout 提供
1、当界面弹出的时候,主要内容区会自动背景变黑,当点击内容区的时候,抽屉布局会消失
2、在屏幕边缘手势滑动 会拉出抽屉布局
1、当界面弹出的时候,主要内容区会自动背景变黑,当点击内容区的时候,抽屉布局会消失
2、在屏幕边缘手势滑动 会拉出抽屉布局
注意:当按后退键的时候,如果抽屉布局正在显示,则需要关闭抽屉布局
首先布局文件:
布局分为三部分,左中右。中间的是APP显示的主要内容区,然后看你个人的需求来选择是要左边弹出布局,还是右边弹出布局。
如果选择是左边弹出界面还是右边弹出界面,只要给弹出界面设设置
自动打开抽屉
mdrawerLayout.openDrawer(Gravity.LEFT);//这里设置的方向应该跟下面xml文件里面的gravity方向相同,不然会报错,start和LEFT都为从左边出现
mdrawerLayout.closDrawers();//没有参数,关闭所有的出现的抽屉
<android.support.v4.widget.DrawerLayout
android:id="@+id/dl"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 界面主要内容布局区 -->
<FrameLayout
android:id="@+id/fl"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
<!-- 左边弹出布局区 -->
<!--
和drawerLayout配合需要配这两个属性
android:layout_gravity="left" //这个值必须要指定,start是从左侧拖拽
出菜单,end是从右侧
android:choiceMode="singleChoice"
-->
<ListView
android:id="@+id/lv"
android:layout_gravity="left"
android:choiceMode="singleChoice"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</android.support.v4.widget.DrawerLayout>
//主方法
public class MainActivity extends AppCompatActivity {
FrameLayout fl;
private ListView lv;
private DrawerLayout dl;
private ArrayList<String> lists;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = findViewById(R.id.lv);
fl = (FrameLayout) findViewById(R.id.fl);
dl = findViewById(R.id.dl);
//获取数据给listview加数据
initData();
//ListView的点击监听事件
setListener();
//DrawerLayout的监听
setDrawerLayoutListener();
}
private void setDrawerLayoutListener() {
/**
* 当抽屉滑动状态改变的时候被调用
* 状态值是STATE_IDLE(闲置--0), STATE_DRAGGING(拖拽的--1), STATE_SETTLING(固定--2)中之一。
* 抽屉打开的时候,点击抽屉,drawer的状态就会变成STATE_DRAGGING,然后变成STATE_IDLE
*/
dl.setDrawerListener(new DrawerLayout.DrawerListener() {
/**
* 当抽屉被滑动的时候调用此方法
* slideOffset 表示 滑动的幅度(0-1)
*/
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
Log.i("drawer", slideOffset + "");
}
/**
* 当一个抽屉被完全打开的时候被调用
*/
@Override
public void onDrawerOpened(View drawerView) {
Log.i("drawer", "抽屉被完全打开了!");
}
/**
* 当一个抽屉完全关闭的时候调用此方法
*/
@Override
public void onDrawerClosed(View drawerView) {
Log.i("drawer", "抽屉被完全关闭了!");
}
@Override
public void onDrawerStateChanged(int newState) {
Log.i("drawer", "drawer的状态:" + newState);
}
});
}
private void initData() {
lists = new ArrayList<>();
for (int i = 0; i < 5; i++) {
lists.add("DrawerLayout"+i);
}
ArrayAdapter<String> stringArrayAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, lists);
lv.setAdapter(stringArrayAdapter);
}
private void setListener() {
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
f1 f1=new f1();
Bundle b=new Bundle();
b.putString("list", lists.get(i));
f1.setArguments(b);
getSupportFragmentManager().beginTransaction().replace(R.id.fl,f1).commit();
//关闭drawer
dl.closeDrawer(lv);
}
});
}
}