DrawerLayout 侧滑菜单

DrawerLayout 提供
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);
            }
        });
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DrawerLayout 是 Android 中的一个布局容器,可以实现侧滑菜单的效果。用户可以通过滑动屏幕边缘或者点击按钮来打开或关闭侧滑菜单侧滑菜单通常用于显示应用程序的导航菜单、设置选项、帮助信息等。DrawerLayout 可以与其他布局容器一起使用,例如 LinearLayout、RelativeLayout 等。 ### 回答2: DrawerLayout 是 Android 的一种界面布局控件,主要用于实现侧滑菜单的功能。侧滑菜单是一种常见的手机应用界面设计,它能在应用主界面之外提供额外的功能选项和导航选项,提高了用户体验。 DrawerLayout 的使用非常简单,需要将主界面和菜单分别定义成两个布局文件,然后将它们作为子控件添加到 DrawerLayout 中即可。DrawerLayout 提供了一些常用的属性和方法,可以自定义菜单的宽度、位置、滑动手势等等。一个简单的示例代码如下: ```xml <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 主界面内容 --> <FrameLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- 菜单内容 --> <ListView android:id="@+id/menu_list" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" /> </android.support.v4.widget.DrawerLayout> ``` 上述代码中,DrawerLayout 是父布局,包含了主界面内容和菜单内容两个子布局,其中主界面内容使用了 FrameLayout,菜单内容使用了 ListView。菜单内容的宽度设置为 240dp,位置设置为左侧,即滑动手势从左侧边缘开始。 除了布局之外,DrawerLayout 还提供了一些监听器和回调方法,用于处理打开、关闭、滑动等操作。具体可以参考 Android 开发文档。 总之,DrawerLayout 是实现 Android 应用侧滑菜单的一种非常方便的控件,可以提高应用的功能性和用户体验。但需要注意的是,过度使用侧滑菜单会降低应用的可用性和易用性,开发人员应该在实际需要时使用。 ### 回答3: DrawerLayout是Android支持库中提供的一个布局控件,用于实现侧滑菜单的效果。通过DrawerLayout,我们可以在应用中添加一个侧滑菜单,用户可以通过手指滑动屏幕方式展开或收起该菜单。出现侧滑菜单的情况通常是当我们希望在一个屏幕中同时包含大量信息时,将导航或其他常用操作从主屏幕中分离出来的时候。 DrawerLayout的使用非常简单。我们只需要将我们的主要内容和侧滑菜单分别放置在DrawerLayout中即可。然后将菜单右侧或左侧设计样式,菜单的宽度可以指定。继而,我们可以通过布局或代码控制菜单的展开或收缩给用户提供更好的用户体验。因为默认情况下,用户可以通过滑动手势来展开或隐藏菜单。 在实现DrawerLayout侧滑菜单时,我们可以通过多种方式添加项目菜单,比如说ListView, GridView或Menu。但是,建议使用RecyclerView支持性更好而且可以和其他布局组合使用。如果需要更高级的菜单创建选项(Settings),我们可以使用PreferenceFragment,这样会尽可能地向用户提供标准化的菜单设置。 总之,DrawerLayout是一个非常方便的布局控件,不仅仅可以实现移动设备上的侧滑菜单,也可以在其他应用中方便地使用。它的灵活性让我们可以更加轻松地为用户提供更好的移动应用体验,并且很容易实现这一点。如果您是一名Android应用程序员,DrawerLayout值得一试!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值