Android-屏幕左右侧滑(二)

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

第二种方式我们介绍的是使用Android源生控件android.support.v4.widget.DrawerLayout来实现屏幕的左侧滑和右侧滑(其中包括点击侧滑和手动滑动侧滑),还可以用代码来控制打开和关闭手动侧滑:

先付上两张效果图供参考,如下:

首页

左侧滑

右侧滑

下面附上实现的完整代码:

布局文件activity_sliding.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Android源生侧滑控件——DrawerLayout -->
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">

    <!-- 左侧滑动栏 -->
    <LinearLayout
        android:id="@+id/main_left_drawer_layout"
        android:layout_width="300dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/colorAccent"
        android:orientation="vertical">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher"
            android:scaleType="centerCrop"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:text="了解会员特权" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:text="QQ钱包" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:text="个性装扮" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:text="我的收藏" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:text="我的相册" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:text="我的文件" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:text="免流量特权" />

    </LinearLayout>

    <!-- 下面显示的主要是主界面内容 -->
    <RelativeLayout
        android:id="@+id/main_content_frame_parent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:onClick="openLeftLayout"
            android:text="左边" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="100dp"
            android:onClick="openRightLayout"
            android:text="右边" />

    </RelativeLayout>

    <!-- 右侧滑动栏 -->
    <RelativeLayout
        android:id="@+id/main_right_drawer_layout"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:background="@color/colorPrimary"
        android:paddingTop="50dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="右边菜单测试" />
    </RelativeLayout>

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

其中左侧滑的菜单部分以android:layout_gravity="start"来表示,右侧滑菜单部分以android:layout_gravity="end"来表示,左右侧滑的宽度以android:layout_width="xxdp"来表示。

DrawerSlidingActivity.java类的控制代码内容:

package com.junto.leftrightslideactivity.activity;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.junto.leftrightslideactivity.R;

/**
 * Created by WangJinyong on 2018/9/26.
 * Android原生侧滑控件
 */

public class DrawerSlidingActivity extends Activity {

    private ActionBarDrawerToggle drawerbar;
    private DrawerLayout main_drawer_layout;
    private LinearLayout main_left_drawer_layout;//左侧滑动栏
    private RelativeLayout main_right_drawer_layout;//右侧滑动栏

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sliding);
        initView();
        initEvent();
    }

    private void initView(){
        main_drawer_layout = findViewById(R.id.main_drawer_layout);
        //设置菜单内容之外其他区域的背景色
        main_drawer_layout.setScrimColor(Color.TRANSPARENT);
//        main_drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);//关闭手势滑动
//        main_drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);//打开手势滑动

        //左边菜单
        main_left_drawer_layout = findViewById(R.id.main_left_drawer_layout);
        //右边菜单
        main_right_drawer_layout = findViewById(R.id.main_right_drawer_layout);
    }

    //设置开关监听
    private void initEvent(){
        drawerbar = new ActionBarDrawerToggle(this,main_drawer_layout,R.string.open,R.string.close);
        main_drawer_layout.setDrawerListener(drawerbar);
    }


    //左边菜单开关事件
    public void openLeftLayout(View view){
        if (main_drawer_layout.isDrawerOpen(main_left_drawer_layout)) {
            main_drawer_layout.closeDrawer(main_left_drawer_layout);
        } else {
            main_drawer_layout.openDrawer(main_left_drawer_layout);
        }
    }

    //右边菜单开关事件
    public void openRightLayout(View view){
        if (main_drawer_layout.isDrawerOpen(main_right_drawer_layout)) {
            main_drawer_layout.closeDrawer(main_right_drawer_layout);
        } else {
            main_drawer_layout.openDrawer(main_right_drawer_layout);
        }
    }
}

以上为全部内容,有不足之处希望大家多多指出,我们相互交流

源码下载地址:https://download.csdn.net/download/u013184970/10690420

猜你喜欢

转载自blog.csdn.net/u013184970/article/details/82877924