当前位置: 首页 > 编程笔记 >

Android实现沉浸式通知栏通知栏背景颜色跟随app导航栏背景颜色而改变

池恩
2023-03-14
本文向大家介绍Android实现沉浸式通知栏通知栏背景颜色跟随app导航栏背景颜色而改变,包括了Android实现沉浸式通知栏通知栏背景颜色跟随app导航栏背景颜色而改变的使用技巧和注意事项,需要的朋友参考一下

最近好多app都已经满足了沉浸式通知栏, 所谓沉浸式通知栏:就是把用来导航的各种界面操作空间隐藏在以程序内容为主的情景中,通过相对“隐形”的界面来达到把用户可视范围最大化地用到内容本身上。

而最新安卓4.4系统的通知栏沉浸模式就是在软件打开的时候通知栏和软件顶部颜色融为一体,这样不仅可以使软件和系统本身更加融为一体。 就是手机的通知栏的颜色不再是白色、黑色简单的两种了,本人用的小米4手机,米4手机中的自带软件都支持沉浸式通知栏, 举个例子:大家可以看一下自己的qq,它的标题的背景颜色是蓝色的,那么通知栏也会变成蓝色。之前可能不行,也是最近支持了。

不知道miui6什么时候能统一支持一下。下面给大家说一下怎么让自己的app支持沉浸式通知栏:

github上已经有大牛研究出来了,说一下怎么实现的:

首先下载SystemBarTint,将里面的SystemBarTintManager.java拷贝出来放到自己的项目中, 在actitvity的onCreate()方法中判断并设置通知栏颜色(颜色需要根据软件的titlebar的背景自己定义

代码一:

代码如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
setTranslucentStatus(true); 
} 
SystemBarTintManager tintManager = new SystemBarTintManager(this); 
tintManager.setStatusBarTintEnabled(true); 
tintManager.setStatusBarTintResource(R.color.statusbar_bg);//通知栏所需颜色 

下面是设置通知栏的状态

@TargetApi(19) 
private void setTranslucentStatus(boolean on) { 
Window win = getWindow(); 
WindowManager.LayoutParams winParams = win.getAttributes(); 
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; 
if (on) { 
winParams.flags |= bits; 
} else { 
winParams.flags &= ~bits; 
} 
win.setAttributes(winParams); 
}

这样就可以完美实现沉浸式通知栏的。注意系统一定是在4.4以上。小伙伴们赶快来试一下吧。

代码二:

通知栏(notification)背景颜色跟随app导航栏(top title)背景颜色变化而变化。
这也叫沉浸式状态栏,这是Google在android 4.4以上的系统提出的。
样式如图所示:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 
}

然后在xml布局文件中加入:

android:clipToPadding="false" 
android:fitsSystemWindows="true" 
 类似资料:
  • 博览会允许更改StatusBar的颜色和其他方面(在屏幕顶部)。 我没有看到任何关于修改导航栏(屏幕底部)背景颜色以匹配任何地方的内容。无需分离即可实现此功能吗?:

  • 我的导航栏有一个白色背景,但在登录页上它应该是透明的,当我向下滚动时它应该是白色的,在其他页面上它应该是白色的。 我使用的代码来自:滚动后更改导航栏颜色? 编辑: 所以我在下面的答案中添加了一个小提琴,但不知何故它不起作用 https://jsfiddle.net/jy6njukm/ 这是我的代码: javascript: 这里是我的navbar css: 我有我的导航栏html只有 我的home

  • 当我滚动页面时,我很难让固定顶部导航栏更改背景颜色。 以下是JS中的函数: 这是一个名为“”的文件,在我加载后加载到页面底部(与位于同一文件夹中) 这里是html导航栏: 然后,我只有css用于更改导航栏背景颜色:

  • 我的导航栏有一个透明的背景,当用户向下滚动时,我想添加一个不同的背景。 我使用了这个问题的代码:滚动后更改导航条颜色? 我的代码现在如下所示: 当我向下滚动时,一切正常,背景和不透明度适用,但当我向后滚动到顶部时,这种样式仍然存在。我希望它更改回没有背景的默认样式。 谢啦

  • 我当前的应用程序运行在iOS 4.2、5和6上。 导航栏为橙色,状态栏为黑色背景色。然而,当我在iOS 7上运行相同的应用程序时,我观察到状态栏看起来是透明的,与导航栏的背景颜色相同。 因此,我无法区分状态栏和导航栏。如何使状态栏与iOS 5和iOS 6中的状态栏相同,即黑色背景色和白色文本色?我如何通过编程实现这一点? 我在谷歌上搜索了一下,发现一个建议,我必须添加一个黑色背景,大约20像素高的

  • 下图显示了一个问题。 正常状态 当背景颜色改为白色时,我的图标不会只改为黑色