一手遮天 Android - view(导航类): DrawerLayout 基础

一手遮天 Android - view(导航类): DrawerLayout 基础,第1张

概述项目地址https://github.com/webabcd/AndroidDemo作者webabcd一手遮天Android-view(导航类):DrawerLayout基础示例如下:/viewavigation/DrawerLayoutDemo1.java/***DrawerLayout-抽屉布局(侧滑菜单)**本例演示*1、如何通过手势侧滑显示侧边菜单,然后再点

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

一手遮天 AndroID - vIEw(导航类): DrawerLayout 基础示例如下:@H_404_8@

/vIEw/navigation/DrawerLayoutDemo1.java

/** * DrawerLayout - 抽屉布局(侧滑菜单) * * 本例演示 * 1、如何通过手势侧滑显示侧边菜单,然后再点击空白处可隐藏侧边菜单 * 2、如何禁止侧边菜单响应手势 *** 作,而只能通过程序来控制侧边菜单的显示和隐藏 * 3、如何修改当显示侧边菜单时,覆盖在主界面上的遮罩层的颜色 * 4、如何自定义侧边菜单显示和隐藏的动画效果 */package com.webabcd.androIDdemo.vIEw.navigation;import androIDx.drawerlayout.Widget.DrawerLayout;import androIDx.appcompat.app.AppCompatActivity;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.Gravity;import androID.vIEw.VIEw;import androID.Widget.button;import com.webabcd.androIDdemo.R;public class DrawerLayoutDemo1 extends AppCompatActivity {    private final String LOG_TAG = "DrawerLayoutDemo1";    private DrawerLayout mDrawerLayout;    private button mbuttonOpenRightDrawer;    private button mbuttonCloseRightDrawer;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_vIEw_navigation_drawerlayoutdemo1);        mDrawerLayout = findVIEwByID(R.ID.drawerLayout);        mbuttonOpenRightDrawer = findVIEwByID(R.ID.buttonOpenRightDrawer);        mbuttonCloseRightDrawer = findVIEwByID(R.ID.buttonCloseRightDrawer);        sample();    }    private voID sample() {        // 修改当显示侧边菜单时,覆盖在主界面上的遮罩层的颜色        mDrawerLayout.setScrimcolor(0x88ff0000);        // 侧滑菜单在显示和隐藏的过程中的事件监听        mDrawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {            // 侧边菜单显示的完整性发生变化时            @OverrIDe            public voID onDrawerSlIDe(VIEw drawerVIEw, float slIDeOffset) {                // slIDeOffset - 侧边菜单显示的完整性(0 - 1 之间)                Log.d(LOG_TAG, String.format("%s onDrawerSlIDe %f", drawerVIEw.getTag(), slIDeOffset));                // 通过 slIDeOffset 这个值可以自定义侧边菜单显示和隐藏的动画效果,比如可以像下面这样为侧边菜单添加透明度动画效果                // drawerVIEw.setAlpha(slIDeOffset);            }            // 侧边菜单完全打开时            @OverrIDe            public voID onDrawerOpened(VIEw drawerVIEw) {                Log.d(LOG_TAG, String.format("%s onDrawerOpened", drawerVIEw.getTag()));            }            // 侧边菜单完全关闭时            @OverrIDe            public voID onDrawerClosed(VIEw drawerVIEw) {                Log.d(LOG_TAG, String.format("%s onDrawerClosed", drawerVIEw.getTag()));            }            @OverrIDe            public voID onDrawerStateChanged(int newState) {                // 0 - 手指不在侧滑菜单上且侧边菜单处于稳定状态(DrawerLayout.STATE_IDLE)                // 1 - 手指正在侧滑菜单上拖动时(DrawerLayout.STATE_DRAGGING)                Log.d(LOG_TAG, String.format("onDrawerStateChanged %d", newState));            }        });        /**         * setDrawerLockMode() - 指定侧边菜单的锁定状态         *     DrawerLayout.LOCK_MODE_UNLOCKED - 不锁定,可以通过手势打开或关闭         *     DrawerLayout.LOCK_MODE_LOCKED_CLOSED - 锁定为关闭状态,不可以通过手势打开(可以通过程序打开),但是可以通过手势关闭         *     DrawerLayout.LOCK_MODE_LOCKED_OPEN - 锁定为打开状态,不可以通过手势关闭(可以通过程序关闭),但是可以通过手势打开         * openDrawer(int gravity, boolean animate), closeDrawer(int gravity, boolean animate) - 通过程序打开或关闭指定的侧边菜单         *     gravity - Gravity.START 代表左侧侧边菜单;Gravity.END 代表右侧侧边菜单         *     animate - 是否显示动画效果         */        // 不允许手势打开右边侧滑菜单        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.END);        mbuttonOpenRightDrawer.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                // 打开右边侧滑菜单                mDrawerLayout.openDrawer(Gravity.END, true);                // 不允许手势关闭右边侧滑菜单                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, Gravity.END);            }        });        mbuttonCloseRightDrawer.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                // 关闭右边侧滑菜单                mDrawerLayout.closeDrawer(Gravity.END, true);                // 不允许手势打开右边侧滑菜单                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.END);            }        });    }}

/layout/activity_vIEw_navigation_drawerlayoutdemo1.xml

<?xml version="1.0" enCoding="utf-8"?><!--    DrawerLayout - 抽屉布局(侧滑菜单)    指定了 layout_gravity="start" 的组件为左侧侧滑菜单    指定了 androID:layout_gravity="end" 的组件为右侧侧滑菜单--><androIDx.drawerlayout.Widget.DrawerLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:ID="@+ID/drawerLayout"    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/buttonOpenRightDrawer"            androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:textAllCaps="false"            androID:text="打开右侧 drawer" />        <TextVIEw            androID:layout_wIDth="match_parent"            androID:layout_height="wrap_content"            androID:layout_gravity="center_vertical"            androID:text="TextVIEw"            androID:textAlignment="center"            androID:textSize="64dp" />    </FrameLayout>    <!--         指定了 layout_gravity="start" 的组件为左侧侧滑菜单         layout_wIDth - 此侧滑菜单的宽度    -->    <linearLayout        androID:layout_wIDth="180dp"        androID:layout_height="match_parent"        androID:background="@color/orange"        androID:layout_gravity="start"        androID:tag="left drawer">    </linearLayout>    <!--         指定了 androID:layout_gravity="end" 的组件为右侧侧滑菜单         layout_wIDth - 此侧滑菜单的宽度    -->    <linearLayout        androID:layout_wIDth="180dp"        androID:layout_height="match_parent"        androID:background="@color/orange"        androID:layout_gravity="end"        androID:tag="right drawer">        <button            androID:ID="@+ID/buttonCloseRightDrawer"            androID:layout_wIDth="match_parent"            androID:layout_height="wrap_content"            androID:textAllCaps="false"            androID:text="关闭右侧 drawer"            androID:textAlignment="center" />    </linearLayout></androIDx.drawerlayout.Widget.DrawerLayout>

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

总结

以上是内存溢出为你收集整理的一手遮天 Android - view(导航类): DrawerLayout 基础全部内容,希望文章能够帮你解决一手遮天 Android - view(导航类): DrawerLayout 基础所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/999518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存