其他分享
首页 > 其他分享> > 安卓之实现侧滑菜单DrawerLayout

安卓之实现侧滑菜单DrawerLayout

作者:互联网

根据郭霖老师在他著作《第一行代码》中的介绍:

Material Design

Material Design是有谷歌的设计工程师们基于传统优秀的设计原则,结合丰富的创意和科学技术所发明的一套全新的界面设置语言,包含了视觉、运动、互动效果等特效。

滑动菜单可以说是Material Design最常见的效果之一,在许多著名的应用中,都有滑动菜单的功能。虽说这个功能看上去好像挺复杂的,不过借助谷歌提供的各种工具,我们可以和轻松地实现非常炫酷的滑动菜单效果。
DrawerLayout
所谓的滑动菜单就是将一些菜单选项隐藏起来,而不是放在主屏幕上,然后可以通过滑动的方式将菜单显示出来。这种方式既节省了屏幕空间,又实现了非常好的动画效果,是Material Design中推荐的做法。
谷歌中提供了一个DrawerLayout控件,借助这个控件,实现滑动菜单简单又方便。
注意:(很重要的吆)
DrawerLayout是一个布局,在布局中允许放入两个直接子控件,第一个控件是主屏幕中显示的内容,第二个子控件是滑动菜单中显示的内容。(必须要这样主界面布局一定要放在侧滑界面的上面)。
 在Android 中写侧滑菜单可以自定义,也可以使用安卓官方自带的v4包,也有第三方包可以用。这里记录官方的
android.support.v4.widget.DrawerLayout
不知道为什么使用安卓官方自带的v4找不到,所以下面我将介绍自定义编写侧滑菜单。
首先需要创建一个安卓项目,在xml中编写如下代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
<androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/draw"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--主界面-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#000000"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="出现"/>

    </LinearLayout>
    <!--侧滑界面-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:background="#ded3d3"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="回到"
            android:background="#87CEEB" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="你好吗"

            />

    </LinearLayout>
</androidx.drawerlayout.widget.DrawerLayout>
    </LinearLayout>

一定要注意(特别重要的事情):
DawerLayout分为侧边菜单和主内容区两部分。

1、主内容区要放在侧边菜单前面,还有就是主内容区最好以DrawerLayout最好为界面的根布局,否则可能会出现触摸事件被屏蔽的问题。
2、 侧滑菜单部分的布局必须设置layout_gravity属性,表示侧滑菜单是在左边还是右边,设置了layout_gravity="start/left"的视图才会被认为是侧滑菜单。

一定要记得在第二个子控件中编写:
android:layout_gravity="left"
如果没有在DawerLayout没有这个属性要手打上去
否则不会出现
在java中编写如下代码:


public class MainActivity extends AppCompatActivity {
    DrawerLayout drawerLayout;
    Button btn, btn2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawerLayout = (DrawerLayout) findViewById(R.id.draw);
        btn = (Button) findViewById(R.id.btn);
        btn2 = (Button) findViewById(R.id.btn2);
//实现方法一:定义好xml文件后手指侧滑就可以拉出侧滑界面了
//实现方法二:定义好xml文件后,在java文件中添加点击事件也可以拉出侧滑菜单,代码如下:



//        点击主界面中的按钮弹出侧滑界面
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                drawerLayout.openDrawer(Gravity.LEFT);
            }
        });

//        点击侧滑界面中的按钮缩回侧滑界面
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                drawerLayout.closeDrawer(Gravity.LEFT);
            }
        });

    }
}

这样就实现一个侧滑菜单,你可以制作一个更加精美的一个侧滑菜单,类似于QQ的侧滑菜单。
效果图如下

在这里插入图片描述

历经千万苦,方能功名就,愿历尽千帆,归来任少年。

标签:控件,菜单,界面,侧滑,安卓,滑动,DrawerLayout
来源: https://blog.csdn.net/jzdcuccess/article/details/106535616