首页 > 其他分享 >Android入门教程 | DrawerLayout 侧滑栏

Android入门教程 | DrawerLayout 侧滑栏

时间:2023-10-20 10:02:39浏览次数:37  
标签:layout 侧滑 入门教程 视图 DrawerLayout Android root


Android入门教程 | DrawerLayout 侧滑栏_职场和发展

DrawerLayout 是实现了侧滑菜单效果的控件。

DawerLayout 分为侧边菜单和主内容区两部分

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

使用的注意事项

  • 主内容视图一定要是 DrawerLayout 的第一个子视图
  • 主内容视图宽度和高度需要 match_parent
  • 必须显示指定侧滑视图的 android:layout_gravity 属性 android:layout_gravity = “start” 时,从左向右滑出菜单 android:layout_gravity = "end"时,从右向左滑出菜单 不推荐使用left和right!!!
  • 侧滑视图的宽度以dp为单位,不建议超过320dp(为了总能看到一些主内容视图) 设置侧滑事件:mDrawerLayout.setDrawerListener(DrawerLayout.DrawerListene
DrawerLayout 示例:

要使用 DrawerLayout,可以在 layout xml 文件中将 DrawerLayout 设置为根视图。

从左边滑出的抽屉视图(侧滑栏)

一个简单的从左边滑出侧滑栏的例子。

侧滑栏滑出后,后面的视图会有个阴影。

layout 文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:openDrawer="start">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="我是主页" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#ffffff">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="我是侧滑栏" />
    </RelativeLayout>

</androidx.drawerlayout.widget.DrawerLayout>

效果:

Android入门教程 | DrawerLayout 侧滑栏_职场和发展_02

需要注意的是,DrawerLayout 要设置tools:openDrawer="start";而且侧滑栏layout要设置android:layout_gravity="start"

如果改成tools:openDrawer="end",侧滑栏 layout 要设置android:layout_gravity="end"。侧滑栏可以从右边滑出。

现在侧边栏放的是RelativeLayout。 也可以放一个RecyclerView。

抽屉出来时推动页面

监听侧滑栏的滑动事件,使用ActionBarDrawerToggle。侧滑栏滑出时,在onDrawerSlide方法中计算出滑动的距离。 然后主视图设置水平相对偏移距离setTranslationX即可。

可在activity的onCreate方法执行配置操作

DrawerLayout root = findViewById(R.id.root);
    final View contentView = findViewById(R.id.content_field);

    ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, root, android.R.string.yes, android.R.string.cancel) {

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, slideOffset);
            float slideX = drawerView.getWidth() * slideOffset;
            contentView.setTranslationX(slideX);
        }
    };
    root.addDrawerListener(actionBarDrawerToggle);

Android入门教程 | DrawerLayout 侧滑栏_flutter_03

改变滑出时的阴影

使用 DrawerLayout 的setScrimColor方法,改变阴影颜色。默认的阴影颜色是 DEFAULT_SCRIM_COLOR = 0x99000000

DrawerLayout root = findViewById(R.id.root);
root.setScrimColor(Color.TRANSPARENT);

Android入门教程 | DrawerLayout 侧滑栏_面试_04

锁定 DrawerLayout
root.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); // 解锁
root.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); // 不检测从左到右的滑动动作

最后分享一份

【腾讯技术团队出品】Android零基础入门到精通,Android Studio安装教程+全套安卓基础教程

Android编程入门教程

Java语言基础从入门到熟悉

Android入门教程 | DrawerLayout 侧滑栏_职场和发展_05

Kotlin语言基础从入门到熟悉

Android入门教程 | DrawerLayout 侧滑栏_职场和发展_06

Android 技术栈从入门到熟悉

Android入门教程 | DrawerLayout 侧滑栏_flutter_07

Android Jetpack 全家桶全面学习

Android入门教程 | DrawerLayout 侧滑栏_android_08

对于新手来说可能安装Android Studio存在一定困难你可以看着以下视频,一步步的跟着学习安装运行

Android Studio 安装教程

Android入门教程 | DrawerLayout 侧滑栏_android studio_09

有了Java阶段的学习,这一阶段建议以视频学习为主辅以图书查漏补缺。如果以图书为主,可以根据图书讲解敲代码,辅以教学视频查漏补缺。遇到问题可以去百度,入门的问题一般会有很多人遇到,并且给出比较好的解答。

需要掌握基本知识点,比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画、网络通信等常见技术。


Android入门教程 | DrawerLayout 侧滑栏_flutter_10

Android入门教程 | DrawerLayout 侧滑栏_面试_11

Android入门教程 | DrawerLayout 侧滑栏_android_12

Android入门教程 | DrawerLayout 侧滑栏_面试_13


Android入门教程 | DrawerLayout 侧滑栏_面试_14


Android入门教程 | DrawerLayout 侧滑栏_flutter_15


Android入门教程 | DrawerLayout 侧滑栏_android studio_16


标签:layout,侧滑,入门教程,视图,DrawerLayout,Android,root
From: https://blog.51cto.com/u_16163452/7946922

相关文章

  • android 升级到java11,升级到androidx的操作方法
    androidstudioAndroid9(28)升级到Android10(29)Androidx小计_sdk29对应依赖androidx.appcompat:appcompat-resources是-CSDN博客java.lang.NoClassDefFoundError:Failedresolutionof:Landroidx/appcompat/R$drawable;-简书(jianshu.com)......
  • Android 一例Base64错误问题
    在Android11下正常,8.1下不正常修改importimportorg.apache.commons.codec.binary.Base64;为importandroid.util.Base64;publicstaticStringencrypt(Stringdata){try{SecretKeysecretKey=newSecretKeySpec(SECRET_KEY.getBytes(),ENCRYPT......
  • 一张图去除焦虑,我还能在Android这行继续“裸泳”
    每当新技术潮流兴起时,总会有人声称它们将使"程序员"失业,例如云服务、低代码等等...云原生的出现甚至引发了一种观点,认为很多程序员工作将会集体下岗,生成式技术正在颠覆多个行业,有专家预言在三年内编程将终结...今年,随着技术的不断突破和创新,它们具备更加完善的能力,可以应用于多个工......
  • Android(S)系统属性服务详解
    1.简介 Android系统中,为统一管理系统的属性,设计了一个统一的属性系统,包括两部分:文件保存的持久属性和每次开机导入的cache属性,前者主要保存在.prop文件中,需要注意的是android属性的名称是有一定的格式要求。每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Andro......
  • 如何在Android中获取图片路径
    Android中获取图片路径的方法在Android开发中,获取图片路径是一个常见的需求。下面介绍几种途径来实现获取图片路径的方法。途径一:从相册中获取图片路径要从相册中获取图片的路径,我们需要调用相应的系统接口实现。具体步骤如下:在Manifest文件中添加获取相册的权限:<uses-per......
  • 最新Unity 如何打包发布到Android
    Unity打包Android现在UnityHub已经做的非常好了,可以直接下载对应Unity版本所对应得JDK,NDK,SDK,直接可以通过unityhub下载避免了,各种版本不同导致的编译问题,大大的降低了初学者的打包发布的难度,本文详细讲解UnityAndroid打包以及在打包中间需要理解的点, 如下:(1) Unityhu......
  • Android转行的第一顺位是智能座舱?
    前言智能座舱是汽车中负责提供驾乘人员舒适性和安全性的部分,其包括了许多功能,如操控系统、娱乐系统、空调系统、通信系统、座椅系统、交互系统、感知系统等。在这些功能的实现上,AndroidFramework系统发挥着重要的作用。Android系统是一种基于Linux的开放源代码操作系统,广泛应用于......
  • 谷歌使用Jetpack Compose逐步重写Android 14,不会你还不知道吧?
    前言早在2019年,谷歌就推出了JetpackCompose,这是一种使用Kotlin开发原生安卓应用的编写方式,抛弃了常规基于XML的视图来设计应用UI,而是让开发者以声明方式创建设计。从那时起,谷歌就大力鼓励开发者在安卓应用中使用JetpackCompose,还使用JetpackCompose重构了其PlaySto......
  • app直播源码,android AES加密解密实现
     app直播源码,androidAES加密解密实现importandroid.util.Base64;importandroid.util.Log; importjava.security.Key; importjavax.crypto.Cipher;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESedeKeySpec;importjavax.crypto.spec.IvParameterSpe......
  • 【Python入门教程】CV2报错:cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-p
    ​     OpenCV作为一个强大计算机视觉库被各个领域广泛应用,今天分享下自己编程遇到的报错信息以及解决办法。1报错信息​[WARN:[email protected]]globalgrfmt_tiff.cpp:716cv::TiffDecoder::readDataOpenCVTIFF:TIFFRGBAImageOK:Sorry,cannothandleimageswith6......