安卓侧滑菜单DrawerLayout的简单使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34536167/article/details/81269911

前言:DrawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如:MenuDrawer等的出现之后,google借鉴而出现的产物,它的使用也很简单。

1、效果图:

这里写图片描述

1、代码非常少,关键代码也就3行…

DrwableActivity:

public class DrwableActivity extends AppCompatActivity {

    private DrawerLayout drawerLayout;
    private LinearLayout linearLayout;
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drwable);

        drawerLayout = this.findViewById(R.id.drawer_menu);
        linearLayout = this.findViewById(R.id.linearlayout);
        //点击事件
        findViewById(R.id.open_drawer).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawerLayout.openDrawer(Gravity.LEFT);
            }
        });

        //关闭事件
        findViewById(R.id.close_drawer).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawerLayout.closeDrawer(Gravity.LEFT);
            }
        });
        //侧滑监听
        drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
                //设置拉出布局的宽度
                linearLayout.setX(slideOffset * drawerView.getWidth());

                Log.e(TAG, "onDrawerSlide: " + "滑动时执行");
                Log.e(TAG, "onDrawerSlide偏移量: " + slideOffset);
                Log.e(TAG, "onDrawerSlide偏移的宽度: " + drawerView.getWidth());
            }

            @Override
            public void onDrawerOpened(@NonNull View drawerView) {
                Log.e(TAG, "onDrawerSlide: " + "完全展开时执行");
            }

            @Override
            public void onDrawerClosed(@NonNull View drawerView) {
                Log.e(TAG, "onDrawerSlide: " + "完全关闭时执行");
            }

            @Override
            public void onDrawerStateChanged(int newState) {
                Log.e(TAG, "onDrawerSlide: " + "改变状态时时执行");
            }
        });
    }
}

2、2个布局

activity_drwable.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_menu"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/linearlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <Button
            android:id="@+id/open_drawer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="打开侧滑" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:padding="10dp"
            android:text="《《《 向右滑动" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:clickable="false"
        android:orientation="vertical">

        <include layout="@layout/layout_left" />

    </LinearLayout>
</android.support.v4.widget.DrawerLayout>



layout_left.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <TextView
        android:id="@+id/close_drawer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="50dp"
        android:drawablePadding="10dp"
        android:drawableTop="@mipmap/ic_launcher"
        android:text="关闭菜单" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮一" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮二" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮三" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮四" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮五" />

</LinearLayout>

注意布局和类中的gravity为left,若要右边自行修改为right(其中left也可以为start,同理右边为end)

猜你喜欢

转载自blog.csdn.net/qq_34536167/article/details/81269911