首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android经典实战之用WindowInsetsControllerCompat方便的显示和隐藏状态栏和导航栏

WindowInsetsControllerCompat 是 Android 中的一个类,用于更方便地处理和控制窗口插入 (Window Insets),例如状态栏和导航栏的显示和隐藏。...它简化了在不同 API 级别上控制系统窗口插入的复杂性,使得开发者能够更轻松地处理状态栏和导航栏的显示/隐藏、动画过渡等操作。...主要功能 1、 显示和隐藏状态栏、导航栏: 使用 WindowInsetsControllerCompat,你可以轻松地控制状态栏和导航栏的显示与隐藏。...Behavior 标志位 WindowInsetsControllerCompat 的 systemBarsBehavior 属性决定了系统栏(状态栏和导航栏)在隐藏和显示时的行为。...与传统方法相比,它更现代、更灵活,同时也更兼容不同的 Android 版本。因此,在处理状态栏、导航栏的显示和样式时,建议使用 WindowInsetsControllerCompat。

31110

Android实战经验分享之如何获取状态栏和导航栏的高度

在 Android 应用开发中,有时我们需要知道状态栏和导航栏的高度,以便在布局中进行调整。获取这些高度的方法有几种,每种方法在准确性和兼容性方面有所不同。...获取状态栏高度的方法 方法一:通过资源名称获取 这种方法最常见,也最推荐,具有较高的准确性和兼容性。...4.4W) 以上,但在较新版本的 Android(API 21及以上)中更为准确。...: 0 } 获取导航栏高度的方法 方法一:通过资源名称获取 这种方法和获取状态栏高度的方式类似。...2、 通过 WindowInsets 获取: 优点:在较新版本的 Android 上非常准确。 缺点:需要较新的 API 级别,可能需要做额外的兼容性处理。

46910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android经典面试题之Kotlin中如何隐藏DialogFragment和Dialog的导航栏

    DialogFragment隐藏导航栏 在 Android 中,使用 DialogFragment 显示对话框时,如果您希望隐藏系统导航栏(如状态栏和导航键),可以通过设置相关的系统 UI 标志来实现。...onViewCreated: 在视图创建后设置系统 UI 可见性标志,隐藏导航栏和状态栏。 onStart: 设置对话框窗口的布局参数,使其覆盖整个屏幕。...这种方法允许您的 DialogFragment 在显示时全屏,并隐藏状态栏和导航栏。...Dialog中隐藏导航栏 在 Android 中,如果想在 Dialog 中隐藏系统导航栏(包括状态栏和底部的导航键),可以通过设置窗口属性来实现。...systemUiVisibility 属性用于隐藏系统导航栏和状态栏。 通过这些设置,当显示 Dialog 时,它将隐藏系统导航栏和状态栏,实现全屏显示。

    19910

    Android状态栏微技巧,带你真正理解沉浸式模式

    比如之前就有一个QQ群友问过我,像饿了么这样的沉浸式状态栏效果该如何实现? ? 这个效果其实就是让背景图片可以利用系统状态栏的空间,从而能够让背景图和状态栏融为一体。...隐藏状态栏 一个Android应用程序的界面上其实是有很多系统元素的,观察下图: ? 可以看到,有状态栏、ActionBar、导航栏等。...隐藏导航栏 现在我们已经成功实现隐藏状态栏的效果了,不过屏幕下方的导航栏还比较刺眼,接下来我们就学习一下如何将导航栏也进行隐藏。...,这样就可以将状态栏和导航栏同时隐藏了。...过一段时间后如果没有任何操作,状态栏和导航栏又会自动隐藏起来,重新回到全屏状态。 这就是最标准的沉浸式模式。

    2.2K100

    笔记53 | 管理系统UI(一)

    淡化状态栏和系统栏 如果要淡化状态和通知栏,在版本为4.0以上的Android系统上,你可以像如下使用 SYSTEM_UI_FLAG_LOW_PROFILE这个标签。...Bar API 指南 Android Design Guide 本课程将教您如何在不同版本的Android下隐藏状态栏。...同步状态栏与Action Bar的变化 在Android 4.1及以上的版本,为了防止在Action Bar隐藏和显示的时候布局发生变化,你可以使用Action Bar的overlay模式。...隐藏导航栏 这节课将教您 在4.0及以上版本中隐藏导航栏 让内容显示在导航栏之后 本节课程将教您如何对导航栏进行隐藏,这个特性是Android 4.0()版本中引入的。...即便本小节仅关注如何隐藏导航栏,但是在实际的开发中,你最好让状态栏与导航栏同时消失。

    1.4K40

    浅谈 Android 自定义锁屏页的发车姿势

    ”,就是我们所谈的沉浸模式,全称为 “Immersive Full-Screen Mode”,它可以使你的app隐藏状态栏和导航栏,实现真正意义上的全屏体验。   ...,短暂调出的状态栏和导航栏会呈半透明状态,并且在一段时间内或者用户与应用内元素进行互动的情况下自动隐藏,沉浸模式的四种状态如下图。...,通过其他标签设定状态栏和导航栏显示或隐藏,以及显示或隐藏的样子。...在 Android 5.0 之后引入了 Material Design,状态栏和导航栏也玩出了更多花样。...所以,透明栏只是能够改变状态栏和导航栏的颜色,并不像沉浸模式那样隐藏状态栏和导航栏,两者是有本质区别的。   对于Android 4.4以上5.0以下的版本,设置透明状态栏的方式如下: ?

    3.9K91

    实现边到边的体验 | 让您的软键盘动起来 (一)

    Android 11 中的新功能之一是可以让应用在对于屏幕上的软键盘打开和关闭的过程创建无缝过渡的动画效果,这一功能源自 Android 11 中对 WindowInsets API 的大量改进。...应用也得以通过更大幅面的内容为用户带来更具有冲击力的体验。 实现边到边跟软键盘有什么关系? 其实,实现边到边不单单只是在状态栏和导航栏之后渲染。...应用本身需要开始负责处理那些跟应用重叠的系统 UI 的部分。 正如我们前面提到的,两个最直观的例子是状态栏和导航栏。...查看文档来获取更具体的信息。 View.SYSTEM_UI_FLAG_LAYOUT_STABLE or // 通知系统,视窗希望在导航栏被隐藏的情况下如何布局内容。...上的问题,来看一下这个 11 年前关于如何关闭软键盘的问题。

    35720

    浅谈Android自定义锁屏页的发车姿势

    ”,就是我们所谈的沉浸模式,全称为 “Immersive Full-Screen Mode”,它可以使你的app隐藏状态栏和导航栏,实现真正意义上的全屏体验。...Android 4.4 之后加入的Immersive Full-Screen Mode 允许用户在应用全屏的情况下,通过在原有的状态栏/导航栏区域内做向内滑动的手势来实现短暂调出状态栏和导航栏的操作,且不会影响应用的正常全屏...,短暂调出的状态栏和导航栏会呈半透明状态,并且在一段时间内或者用户与应用内元素进行互动的情况下自动隐藏,沉浸模式的四种状态如下图。...,通过其他标签设定状态栏和导航栏显示或隐藏,以及显示或隐藏的样子。...所以,透明栏只是能够改变状态栏和导航栏的颜色,并不像沉浸模式那样隐藏状态栏和导航栏,两者是有本质区别的。

    2.3K80

    最新iOS设计规范三|3大界面要素:栏(Bars)

    导航栏是半透明的,也可以添加背景色,并且必要时可以设置为隐藏。 ? 某些情况下可暂时隐藏导航栏,以提供更沉浸的体验。例如,当人们查看全屏照片时,“照片”会隐藏导航栏和其他界面元素。...但是,无边框样式在标准标题导航栏中可能无法很好地起作用,因为该栏的标题和按钮可能难以区分。iPad上的拆分视图是一个例外,更多的是通过在这两种视图中使用无边框样式来保持主视图和辅助视图之间的一致性。...状态栏的文本和指示器的视觉样式可以是浅色或深色,可以针对APP进行全局设置,也可以针对不同的屏幕单独设置。 深色状态栏的效果在浅色内容至少效果很好,而浅色状态栏的效果在深色内容上效果很好。...当用户尝试关注媒体时,状态栏可能会分散注意力。暂时隐藏这些元素以提供更沉浸的体验。例如,当用户浏览全屏照片时,“照片”应用程序将隐藏状态栏和其他界面元素。 ? 避免永久隐藏状态栏。...例如,如果iOS设备上没有歌曲,则“音乐”应用中的“立即收听”选项卡将说明如何下载歌曲。 始终在附加视图中切换上下文。

    9.9K10

    安卓软件开发:使用Jetpack Compose实现高级NimNavBottomApp

    一、项目背景 展示 Jetpack Compose 如何简化 UI 的编码,如何使用 Material 3 提供的组件实现现代化的 Android 应用设计。...初级开发可以看怎么通过实现跳转底部导航栏对应tiem对应的内容,也有详细介绍了中高级开发者提供了实用技巧,比如如何处理通知徽章(Badges)和导航状态的管理。...这个Demo,我实现了一个常见的底部导航栏App,包括多个页面切换、选中状态的高亮显示、徽章通知的显示等功能。...中高级开发者看这个视频了解如何通过底部导航栏实现徽章的动态更新。...三、技术难点 3.1 状态管理与导航同步 在多页面应用中,状态管理和导航同步一直是个难题,如何让导航状态与页面展示保持一致,确保底部导航栏能够正确高亮选中的页面,这是需要特别注意的地方。

    264101

    Android的Dialog弹出时隐藏导航栏效果,目前认为的最优解

    原本Android的ProgressDialog用法很简单,两三行代码就搞定了。但是,但是,但是,用在无人值守的自助终端上,总是把之前隐藏掉的导航栏和状态栏显示出来。这是不可接受的。...项目中用到一个Android的ProgressDialog显示操作的进度条,机器要求是屏蔽或隐藏掉导航栏和虚拟按键的显示。...但是试了好多方法,也参考了网上的很多做法,隐藏安卓底部导航栏之后 弹出dialog或者popupwindow后,导航栏会再次显示出来,虽然可以设置在dialog的onStart中再次隐藏导航栏,但是会出现一个导航栏显示出来又马上隐藏掉的一个效果...在Activity中,虽然在setContentView(R.layout.activity_main)之前调用隐藏状态栏的代码,但是一旦Activity跳转,就又出来了, 解决办法是在隐藏状态栏逻辑代码的下面...,加上一个状态栏变化的响应处理,在把它隐藏掉。

    4.8K20

    全屏、沉浸式、fitSystemWindow使用及原理分析:全方位控制“沉浸式”的实现

    下面就来分析一下,APP层的API如何影响SystemUI的显示的,并一步步解开所谓沉浸式与全屏的原理,首先看一下如何更改状态栏颜色。...当然,如果设置了隐藏状态栏,或者导航栏,并且没有让布局随着隐藏而动态变化的话,就会看到被覆盖的padding,默认是白色,如下图,隐藏状态栏前后的对比: ? 没隐藏状态栏 ?...隐藏了状态栏 以上是DecorView对状态栏的添加机制,总结出来就是一句话:只要状态栏/导航栏不设置隐藏,设置颜色就会有效。...仅仅设置隐藏导航栏 上图中由于设置了SYSTEM_UI_FLAG_HIDE_NAVIGATION,所以没有导航栏View被添加,DecorView中只有状态栏背景(1)View与根内容布局,从图中的点2...总结 状态栏与导航栏颜色的设置与其显示隐藏有关系,一旦隐藏,设置颜色就无效,并且颜色是通过向DecorView根布局addView的方式来实现的。

    5.8K40

    沉浸式管理:让你的APP更优雅

    ,只为了方便大家更灵活的去设置状态栏和导航栏风格。...View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。...android 5.0以上核心代码 Android自5.0起,为我们提供了设置状态栏和导航栏颜色的API,我们可以自己设置状态栏和导航栏的颜色。...有些app的状态栏并不是和标题栏颜色相同,稍微有些色差,所以在这里开发者只需要通过blendARGB()设置透明度就可以形成这种色差,而且还可以指定两种颜色之间的色差值,方便大家,android4.4上亦是如此...状态栏和导航栏的隐藏 android 4.1以上支持状态栏和导航栏隐藏 ? 总结 至此,ImmersionBar库的用法与原理都讲完了。

    1.8K30

    沉浸式状态栏的三种实现方式

    沉浸式算是目前Android行业比较流行的一种App设计风格,将菜单栏北京设置为导航栏的颜色,感觉顶部状态栏像是被入侵了一样,因此称为沉浸式菜单栏。本文将介绍三种方式去实现沉浸式状态栏。 ?...Google从android kitkat(Android 4.4)开始, 给我们开发者提供了一套能透明的系统ui样式给状态栏和导航栏,这样的话就不用向以前那样每天面对着黑乎乎的上下两条黑栏了,还可以调成跟...Activity一样的样式,形成一个完整的主题,和IOS7.0以上系统一样了。...android:text="你好,沉浸式状态栏"/> 接着看下第二种方式 实现思路,添加隐藏布局,然后我们动态的计算状态栏的高度,然后把这个高度设置成这个隐藏的布局的高度...text="你好,沉浸式状态栏"/> 最后的第三种 这个是用的github上的第三方库 1.库地址:https://github.com/jgilfelt/SystemBarTint

    1.8K30

    熟悉Android Studio界面,开始装逼卖萌

    通过前两期的学习,我们可以正确搭建好Android Studio的开发环境,也创建了HelloWorld工程并成功运行,那么本期就带你一起来了解这款强大的IDE开发工具吧。...其中区域1为菜单栏,区域2为工具栏,区域3为导航条,区域5为代码编辑区,区域4、6为工具窗口,底部的区域7为状态栏,左侧、右侧和状态栏上部区域为工具条,接下来就一一拆解进行了解。...5工具条 工具条是用来放置工具的,点击后可以展开工具窗口。Android Studio中的工具条分布在主界面的左右两边和底部(状态栏上面)。...6状态栏 状态栏通常在界面的最底部,主要显示Android Studio当前的状态和执行的任务。 ?...左下角的图标为工具栏窗口显示和隐藏开关,可单击完成工具栏的显示和隐藏。

    3.3K60

    关于 Android 中的各种 Bar 和“透明状态栏”的一些知识

    此篇文章主要讲解关于沉浸式状态栏,程序全屏和分清状态栏、ActionBar、ToolBar 的一些知识内容。主要是讲解如何适配状态栏。...,状态栏就会下来,我们的 UI 布局就会跑到状态栏下面,和没有设置的时候效果是一样的。...screnn_stable.png 5.沉浸模式 // 所谓沉浸模式就是一开始我们的 UI 布局是全屏的,状态栏和虚拟导航键也是隐藏的,当我们需要的系统 UI 的时候,从状态栏的位置下拉就可以出现系统...,导航栏和状态栏就会出来,过一会就会消失,类似于游戏中那样。...如果设置了这个属性为 true,那么则是保留系统 UI 的位置(实际上是固定了我们的 UI 的高度,我们 UI 的高度就是屏幕去掉系统栏高度后的高度),那么这个时候你如何设置了 FLAG_LAYOUT_HIDE_NAVIGATION

    2.8K10

    ADB 操作命令详解及用法大全(四)

    1 仅警告——允许访问所有非 SDK 接口,但保留日志中的警告信息,可继续使用 strick mode API。 2 禁止调用深灰名单和黑名单中的接口。...修改状态栏和导航栏的显示隐藏 adb shell settings put global policy_control 可由如下几种键及其对应的值组成...key 含义 immersive.full 同时隐藏 immersive.status 隐藏状态栏 immersive.navigation 隐藏导航栏 这些键对应的值可则如下值用逗号组合...package-name 排除指定应用 例如: adb shell settings put global policy_control immersive.full=* 表示设置在所有界面下都同时隐藏状态栏和导航栏...com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。

    65010

    沉浸模式 | 手势导航连载 (四)

    本文我们将为大家介绍的是手势交互和冲突在全屏应用 (系统栏也被隐藏) 下的情况和注意事项。让我们给大家讲讲流程图右侧的两种情况。...这两种模式都有两种状态: 系统栏隐藏: 在此状态下,返回主屏幕手势和后退手势均被禁用。用户必须首先从边缘向内侧滑动才能让系统栏显示。...系统栏显示: 在此状态下,返回主屏幕手势和后退手势可以正常工作。 现在,我们已经了解了沉浸模式的基础知识,下面介绍这两种不同模式的细节。...常见的例子包括全屏视频播放和照片浏览等。 就手势导航而言,非粘性沉浸模式与其在早期版本的 Android 上的工作方式一致。...我们来看一下运行在 Android 10 上,且使用手势导航的 Markers 绘图应用: image.png 如上图所示,一旦用户开始在屏幕边缘附近滑动 (绘制),就会触发后退手势,这会打断用户当前的操作

    1.3K30

    处理视觉冲突 | 手势导航 (二)

    更具体一点来说,本文主要处理与系统 UI 出现视觉重叠的问题。系统 UI 包括屏幕上由系统提供的所有 UI,例如导航栏和状态栏,另外它还包括诸如通知面板之类的内容。...边衬区 (Insets) 不少 Android 开发者看到边衬区 (insets) 往往会退避三舍,这个可能来源自他们在 Android Lollipop 时代试图在状态栏后面绘制 UI 的经历,而这个经历并不那么令人愉悦...我们甚至能看到在 StackOverflow 上有个一直热门的问题就是关于这个的。 Insets 区域负责描述屏幕的哪些部分会与系统 UI 相交 (intersect),例如导航或状态栏。...自 API 1 以来,它们就以各种形式存在着,并且每当系统 UI 重叠显示在您的应用上方时,这个方法就会被调用。常见的例子是下拉状态栏和导航栏,或者弹出屏幕软键盘 (IME)。...在 Android 10 中新增的 insets 方面,compat 版本的方法在所有 API 级别的设备上都能得到正确的结果。

    2.8K30
    领券