最近开发Android音乐,遇到关于沉浸式状态栏的问题,当音乐封面背景图片和状态栏融合到一起时,如果状态栏的字体设置为白色或者浅色,这时背景图片的颜色也是白色,导致状态栏的字体几乎看不到的问题。如下图
这时,如果只是单纯的设置状态栏的字体颜色,这样是不行,因为每播放一首歌,他得封面是不同的,有的颜色深,有的颜色浅,这时候要去判断背景图片的bitmap值,来设置不同的状态栏字体颜色,即所谓的自适应。
核心代码如下:
public static int generateBitmapYAverage(Bitmap bitmap) {
int[] pixels = getBitmapPixels(bitmap, true);
long totalY = 0;
for (int pixel : pixels) {
totalY += (Color.red(pixel) * 0.299f + Color.green(pixel) * 0.587f + Color.blue(pixel) * 0.114f);
}
return (int) (totalY / pixels.length);
}
这里主要是获取图片背景的背景色值,然后加以判断
if (CommonActivity.generateBitmapYAverage(activity.playBitmap) >= 200) {
CommonActivity.sForeGroundColor = CommonActivity.sBlackColor;
} else {
CommonActivity.sForeGroundColor = CommonActivity.sWhiteColor;
}
updateTextForegroundColor(CommonActivity.sForeGroundColor, (ViewGroup) getWindow().getDecorView());
就可以实现不同情况下的状态栏显示。
总而言之,在很多情况下,这个还是必须的,例如桌面壁纸的设置等,在变化的背景图片下,需要我们自己去设置状态栏的颜色。
---------------------
作者:????_HS
来源:优快云
原文:https://blog.youkuaiyun.com/csuhanshuai/article/details/52648671
版权声明:本文为博主原创文章,转载请附上博文链接!
本文介绍了一种Android音乐应用中状态栏字体颜色自适应背景图片的方法。通过计算图片的平均亮度值来决定状态栏字体颜色是黑色还是白色,解决了不同背景图片下状态栏字体可见性问题。
1061

被折叠的 条评论
为什么被折叠?



