美文网首页Android
DrawerLayout 简单使用

DrawerLayout 简单使用

作者: mm_cuckoo | 来源:发表于2017-01-11 14:00 被阅读1330次

    介绍

    drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)。

    实用

    DrawerLayout 实用比较简单,这里只介绍简单使用和常用API。

    1. 在布局文件中使用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/dlyt_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    
        <!-- 内容 -->
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/btn_context"
                android:text="context"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
    
        </FrameLayout>
    
        <!-- 左边菜单 -->
        <FrameLayout
            android:background="@color/colorAccent"
            android:layout_gravity="start"
            android:layout_width="200dp"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/btn_left_menu"
                android:text="left menu"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </FrameLayout>
    
        <!-- 右边菜单 -->
        <FrameLayout
            android:background="@color/colorAccent"
            android:layout_gravity="end"
            android:layout_width="200dp"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/btn_right_menu"
                android:text="right menu"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </FrameLayout>
    </android.support.v4.widget.DrawerLayout>
    
    

    在 DrawerLayout 布局中有三个元素,

    1. view 主体
    2. 左边菜单:
      左边菜单的设定使用android:layout_gravity="start" 设置。
    3. 右边菜单:
      右边菜单的设定使用android:layout_gravity="end" 设置。

    通过上面,我们就已经实现了左右划出菜单效果。
    如果我们需要加上一些控制逻辑,可能就需要一些的一些API了。

    DrawerLayout 中部分 API 介绍

    1. isDrawerOpen(@EdgeGravity int drawerGravity) : 判断菜单是否打开。

    传入参数:

    • GravityCompat.START : 左边菜单是否打开。
    • GravityCompat.END : 右边菜单是否打开。

    返回值

    • 打开 : true
    • 关闭 : false
    1. openDrawer(@EdgeGravity int gravity) : 打开菜单

    传入参数:

    • GravityCompat.START : 打开左边菜单。
    • GravityCompat.END : 打开右边菜单。
    1. closeDrawer(@EdgeGravity int gravity) : 关闭菜单

    传入参数:

    • GravityCompat.START : 关闭左边菜单。
    • GravityCompat.END : 关闭右边菜单。
    1. addDrawerListener(@NonNull DrawerListener listener) : 添加监听
    2. DrawerListener 类
    • onDrawerSlide(View drawerView, float slideOffset) : 滑动时调用
    • onDrawerOpened(View drawerView) : 打开菜单时调用
    • onDrawerClosed(View drawerView) : 关闭菜单时调用
    • onDrawerStateChanged(@State int newState) : 菜单状态改变时调用

    其他API查看源码就会明白如何使用。

    如下Java示例代码:

    //添加监听
    DrawerLayout.addDrawerListener(new DrawerViewListener());
    
    private class DrawerViewListener implements DrawerLayout.DrawerListener {
        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
        //滑动时调用
        }
    
        @Override
        public void onDrawerOpened(View drawerView) {
        //打开菜单时调用
        }
    
        @Override
        public void onDrawerClosed(View drawerView) {
        //关闭菜单时调用
        }
    
        @Override
        public void onDrawerStateChanged(int newState) {
        //菜单状态改变时调用
        }
    }
    

    相关文章

      网友评论

        本文标题:DrawerLayout 简单使用

        本文链接:https://www.haomeiwen.com/subject/oihrbttx.html