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

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

WindowInsetsControllerCompat 是 Android 中的一个类,用于更方便地处理和控制窗口插入 (Window Insets),例如状态栏和导航栏的显示和隐藏。...它简化了在不同 API 级别上控制系统窗口插入的复杂性,使得开发者能够更轻松地处理状态栏和导航栏的显示/隐藏、动画过渡等操作。...主要功能 1、 显示和隐藏状态栏、导航栏: 使用 WindowInsetsControllerCompat,你可以轻松地控制状态栏和导航栏的显示与隐藏。...3、 设置系统窗口插入的样式: 例如,可以设置状态栏和导航栏的亮色或暗色(浅色主题下的深色文本和图标,或者深色主题下的浅色文本和图标)。...你可以设置状态栏和导航栏的颜色样式(亮色或暗色),以便在不同主题下提供更好的用户体验。

30910

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

在 Android 应用开发中,有时我们需要知道状态栏和导航栏的高度,以便在布局中进行调整。获取这些高度的方法有几种,每种方法在准确性和兼容性方面有所不同。...获取状态栏高度的方法 方法一:通过资源名称获取 这种方法最常见,也最推荐,具有较高的准确性和兼容性。...: 0 } 获取导航栏高度的方法 方法一:通过资源名称获取 这种方法和获取状态栏高度的方式类似。...,但需要更高的 API 级别。...缺点:需要较新的 API 级别,可能需要做额外的兼容性处理。 兼容性建议 对于支持的最低 API 级别较低的应用,建议优先使用通过资源名称获取的方法,因为这种方法在大多数情况下效果良好。

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

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

    可以知道在官方是根本没有 沉浸式状态栏 这种说法的。只有 沉浸模式 就是其实就是出于全屏状态。所谓的 ”沉浸式状态栏“,类似于下面图的样子: ?...上面也说了这种错误的叫法是不对的,没有沉浸式状态栏 ,这种样式只是将内容 UI 设置成了全屏,把状态栏设置成了透明。...所以这种是叫做 状态栏透明模式 设置透明状态栏 先来几组效果图,从效果 1 开始逐渐递进演示,这里面的几个重要参数会在后面具体说明,这里先说明现象 1.内容布局全屏 在 Android 4.1 以上设置去除状态栏或者认为是状态栏被内容布局遮挡了...这个时候我们只要设置状态栏为透明。就是我们想要的透明状态栏的那种效果了。 效果图: ?...screnn_stable.png 5.沉浸模式 // 所谓沉浸模式就是一开始我们的 UI 布局是全屏的,状态栏和虚拟导航键也是隐藏的,当我们需要的系统 UI 的时候,从状态栏的位置下拉就可以出现系统

    2.8K10

    iOS透明导航栏的平滑过渡(进阶版)引实现过程结

    既然有透明的导航栏也有不透明的导航栏,那一定会在界面切换之间存在一个过渡的过程,而这个过程,QQ做的特别好,在从透明导航栏界面返回到不透明导航栏界面时,导航栏的透明度是一个渐进的过渡效果,甚至会有一种毛玻璃的效果...直接隐藏起来的意思是,整个导航栏就用不了了,也就是说,标题、返回按钮等都需要自己去做,这是一个比较麻烦的地方,此外,在有无导航栏的界面间切换时,过程是比较生硬的,导航栏不是渐变出现的。...设置导航栏背景透明度 导航栏上应该是有很多view的,我们要做的是只让背景透明,而保留标题、返回按钮。iOS没有直接给我们提供对于导航栏背景view的访问途径,那么我们只能自己来找了。...有它在岂不是前功尽弃了,再用上面的方法已经不管用了,这条线不在我们找出来的子view之中,通过查资料,要隐藏这跟细线的方法很多,但是要跟我们对导航栏背景的设置不冲突,又要能到只在将导航栏背景设为透明时才隐藏...,导航栏的透明度是直接跳变的: 而我们想要的是像QQ一样从完全透明到不透明之间有一个随着滑动手势变化的透明度渐变效果,这样是最好的转场效果了。

    3.1K40

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

    其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起的。因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersive Mode)这种说法。...这样看上去就有点沉浸式效果的模样了。 虽说这才是正统的沉浸式含义,但有些朋友可能想实现的就是饿了么那样的状态栏效果,而不是直接把整个系统状态栏给隐藏掉,那么又该如何实现呢?...除了隐藏导航栏之外,我们同样也可以实现和刚才透明状态栏类似的效果,制作一个透明导航栏: super.onCreate(savedInstanceState); setContentView(R.layout.activity_main...需要注意的是,只有在Android 4.4及以上系统才支持沉浸式模式,因此这里也是加入了if判断。... 这样我们就实现类似于海岛奇兵和爱奇艺的沉浸式模式效果了,如下图所示。 ? 可以看到,界面默认情况下是全屏的,状态栏和导航栏都不会显示。

    2.2K100

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

    沉浸式实现原理其实是使整个activity布局延伸到整个屏幕,然后使状态栏变成透明色,有些手机会有导航栏,同样也可以把导航栏变成透明色,这样会使一些app更加美观。 先看两个概念 状态栏 ?...修改状态栏字体颜色为深色 ? ? 设置状态栏和导航栏透明度 ? ? ? 解决EditText和软键盘的问题 ? ?...有些app的状态栏并不是和标题栏颜色相同,稍微有些色差,所以在这里开发者只需要通过blendARGB()设置透明度就可以形成这种色差,而且还可以指定两种颜色之间的色差值,方便大家,android4.4上亦是如此...android 4.4核心代码 在4.4里就没有5.0以上这些api了,只能设置透明状态栏和导航栏,而且设置透明导航栏之后,底部布局会被导航栏遮住,那怎么办呢?...,设置导航栏颜色的时候,底部布局会被导航栏遮住,除此之外还有一个小问题就是当用户设置状态栏为透明色的时候,不能时刻改变bar的颜色值,are you kidding?

    1.8K30

    Android 沉浸式解析和轮子使用

    绘制,绘制透明背景的系统 bar(状态栏和导航栏),然后用 getStatusBarColor() 和 getNavigationBarColor() 的颜色填充相应的区域。...2.1.1 收集 bar 参数 我们使用一个对象用于存储用户设置的 bar 参数,这些参数有状态栏和导航栏颜色、透明度、显示隐藏等等,通过该对象中的参数来分别设置 public class BarParams...() //透明导航栏,不写默认黑色(设置此方法,fullScreen()方法自动为true) .transparentBar() //透明状态栏和导航栏...(R.color.colorPrimary) //同时自定义状态栏和导航栏颜色,不写默认状态栏为透明色,导航栏为黑色 .statusBarAlpha(0.3f) //状态栏透明度...,不写默认0.0f .navigationBarAlpha(0.4f) //导航栏透明度,不写默认0.0F .barAlpha(0.3f) //状态栏和导航栏透明度

    3.2K10

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

    可以这么理解:状态栏与导航栏拥有自己独立的窗口,而且这两个窗口的优先级较高,会悬浮在所有窗口之上,可以把系统自身的状态栏与导航栏看做全透明的,之所有会有背景颜色,是因为下层显示界面在被覆盖的区域添加了颜色...先看下关键点1跟2 ,这里是根据SystemUI的配置决定是否显示状态栏背景颜色,如果状态栏都不显示,那就没必要显示背景色了,其次,如果状态栏显示,但背景是透明色,也没必要添加背景颜色,即不满足(color...改变状体栏及导航栏的颜色的本质是往DecorView中添加有颜色的View, 并放在状态栏及导航栏下面。...隐藏了状态栏 以上是DecorView对状态栏的添加机制,总结出来就是一句话:只要状态栏/导航栏不设置隐藏,设置颜色就会有效。...仅仅设置隐藏导航栏 上图中由于设置了SYSTEM_UI_FLAG_HIDE_NAVIGATION,所以没有导航栏View被添加,DecorView中只有状态栏背景(1)View与根内容布局,从图中的点2

    5.8K40

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

    ,短暂调出的状态栏和导航栏会呈半透明状态,并且在一段时间内或者用户与应用内元素进行互动的情况下自动隐藏,沉浸模式的四种状态如下图。...,通过其他标签设定状态栏和导航栏显示或隐藏,以及显示或隐藏的样子。...这个“半透明化”包括了状态栏和通知栏,当开发者让应用支持这个新特性的时候,状态栏和导航栏可以单独/同时变为渐变的半透明样式,如下图: ?   ...现在除了原有的“半透明”模式以外,还有“全透明”以及“变色”模式,一种会完全隐藏背景,另一种可以取色作为背景颜色,多种样式的透明栏如下图(上图为透明状态栏,下图为透明导航栏): ? ?   ...所以,透明栏只是能够改变状态栏和导航栏的颜色,并不像沉浸模式那样隐藏状态栏和导航栏,两者是有本质区别的。   对于Android 4.4以上5.0以下的版本,设置透明状态栏的方式如下: ?

    3.9K91

    iOS小技能:设置状态栏背景颜色(图片)

    sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame; } 1.2 适配特色场景:状态是有透明或者半透明的效果的场景...补充:如果整个项目的状态栏(电池栏)都是有颜色的,并且都是不透明的,上面这个方法完全可以应付。...但是如果有状态是有透明或者半透明的效果,上面这个方法还是不能胜任,越透明越明显;经过一番查找,终于发现问题: 问题: 1、iOS 13之前,可以通过valueForKey 获取UIApplication...因此这个方法多次调用就会创建多份statusBar,造成内存开销不说,想设置状态栏为为透明,根本没效果。 解决办法:既然定位到问题所在,办法就是保证iOS 13 之后,每次也都能拿到有去只有一个对象。...} } else { return NO; } } ///*状态栏和导航栏总高度

    2K40

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

    ,短暂调出的状态栏和导航栏会呈半透明状态,并且在一段时间内或者用户与应用内元素进行互动的情况下自动隐藏,沉浸模式的四种状态如下图。...,通过其他标签设定状态栏和导航栏显示或隐藏,以及显示或隐藏的样子。...这个“半透明化”包括了状态栏和通知栏,当开发者让应用支持这个新特性的时候,状态栏和导航栏可以单独/同时变为渐变的半透明样式,如下图: ?...现在除了原有的“半透明”模式以外,还有“全透明”以及“变色”模式,一种会完全隐藏背景,另一种可以取色作为背景颜色,多种样式的透明栏如下图(上图为透明状态栏,下图为透明导航栏): ? ?...所以,透明栏只是能够改变状态栏和导航栏的颜色,并不像沉浸模式那样隐藏状态栏和导航栏,两者是有本质区别的。

    2.3K80

    android 设置标题栏背景颜色_状态栏菜单栏都在哪

    大家好,又见面了,我是你们的朋友全栈君。...下面是同一个activity切换不同fragment时,状态栏文字颜色跟着变化的效果图: 下图是同一个Activity向上滚动时,标题栏和状态栏文字颜色根据变化的效果: 1....android:fitsSystemWindows=”true”属性就可以了,要不布局会跑到状态栏和导航栏下面,与导航栏和状态栏重叠,这当然不是我们希望的。...,为适应状态栏背景为浅色调,该Flag只有在使用了FLAG_DRWS_SYSTEM_BAR_BACKGROUNDS,并且没有使用FLAG_TRANSLUCENT_STATUS时才有效,即只有在透明状态栏时才有效...经过网上搜索相关资料,其实实现方法和实现透明状态栏效果方法一致。 解决的方法: 1. 先判断手机是否有物理按钮判断是否存在NavigationBar; 2.

    2.3K10

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

    沉浸式算是目前Android行业比较流行的一种App设计风格,将菜单栏北京设置为导航栏的颜色,感觉顶部状态栏像是被入侵了一样,因此称为沉浸式菜单栏。本文将介绍三种方式去实现沉浸式状态栏。 ?...Google从android kitkat(Android 4.4)开始, 给我们开发者提供了一套能透明的系统ui样式给状态栏和导航栏,这样的话就不用向以前那样每天面对着黑乎乎的上下两条黑栏了,还可以调成跟...); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);..."/> 接着看下第二种方式 实现思路,添加隐藏布局,然后我们动态的计算状态栏的高度,然后把这个高度设置成这个隐藏的布局的高度,便可以实现 在这里我们通过反射来获取状态栏的高度...这个是上传的github上的demo地址;https://github.com/wuyinlei,如有疑问,欢迎交流.

    1.8K30

    Android--沉浸式导航栏适配

    本文是用于设配SDK4.4到5.0的沉浸式导航栏适配(4.4下面的实现不了沉浸式),上次说到适配沉浸式状态栏时,为DecorView添加一个View可以是实现,导航栏也同样,但是不是所有手机都有导航栏,...().getMetrics(contentMetrics); //如果竖屏状态下,物理屏幕的高度比内容屏幕的高度高,则含有导航栏, //同样,横屏状态下,物理屏幕的宽度比内容屏幕的宽度高...statusBarAlpha 导航栏透明度 */ public static void setColor(Activity activity, @ColorInt int color,...blue * a + 0.5); return 0xff << 24 | red << 16 | green << 8 | blue; } /** * 生成一个和状态栏大小相同的半透明矩形条...* * @param activity 需要设置的activity * @param color 状态栏颜色值 * @param alpha 透明值

    1.7K20

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

    导航栏是半透明的,也可以添加背景色,并且必要时可以设置为隐藏。 ? 某些情况下可暂时隐藏导航栏,以提供更沉浸的体验。例如,当人们查看全屏照片时,“照片”会隐藏导航栏和其他界面元素。...隐藏状态栏下的内容。默认情况下,状态栏的背景是透明的,是可以看到背后的内容的。保持状态栏可读,并不意味着其背后的内容是可交互的。...在“照片”应用中浏览全屏照片时,只需轻按一次即可再次显示状态栏。 五、标签栏(Tab Bars) 标签栏出现在页面底部,可以在APP的不同模块之间快速切换。标签栏是半透明的,也可添加背景颜色。...因为模态视图为人们提供了一种单独的体验,使他们在完成后便会被解雇,所以这不是应用程序整体导航的一部分。 选项卡功能不可用时,请勿删除或禁用该选项卡。...六、工具栏(Tool Bars) 工具栏出现在页面的底部,其中包含执行与当前视图或内容相关操作的按钮。工具栏是半透明的,也可以添加背景颜色,并在用户不需要它们时应该隐藏起来。

    9.9K10

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

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

    4.8K20

    开启全面屏体验 | 手势导航 (一)

    (状态栏和导航栏统称为系统栏) ? 实现从边到边的全面屏体验后,系统栏会覆盖在应用内容前方。应用也得以通过更大幅面的内容为用户带来更具有冲击力的体验。...具体来说,这意味着应用需要做两件事: 在导航栏后面绘制内容 想要支持手势导航,应用需要考虑的第一个因素是在导航栏后面绘制内容。...在搭载 Android 9 及以下的设备上运行时,导航栏后绘制内容是可选的,方便应用根据情况酌情选择。...如果您的应用针对的是 SDK 28 或更低版本,则系统不会显示遮盖,而是提供透明的导航栏。 ?...△ 使用手势导航模式时系统提供的半透明遮盖 否则,系统将使用动态色彩适应。上文中列出的条件是目前系统用来判断的依据,在将来可能会更改。

    2.5K30

    开启全面屏体验 | 手势导航 (一)

    (状态栏和导航栏统称为系统栏) 实现从边到边的全面屏体验后,系统栏会覆盖在应用内容前方。应用也得以通过更大幅面的内容为用户带来更具有冲击力的体验。...具体来说,这意味着应用需要做两件事: 在导航栏后面绘制内容 想要支持手势导航,应用需要考虑的第一个因素是在导航栏后面绘制内容。...在搭载 Android 9 及以下的设备上运行时,导航栏后绘制内容是可选的,方便应用根据情况酌情选择。...如果您的应用针对的是 SDK 28 或更低版本,则系统不会显示遮盖,而是提供透明的导航栏。...△ 使用手势导航模式时系统提供的半透明遮盖 否则,系统将使用动态色彩适应。上文中列出的条件是目前系统用来判断的依据,在将来可能会更改。

    23110
    领券