您的位置:首页 > 移动开发 > Android开发

关于Android沉浸式状态栏字体颜色和图片背景自适应变化

2016-09-24 10:37 711 查看
最近开发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());

就可以实现不同情况下的状态栏显示。

总而言之,在很多情况下,这个还是必须的,例如桌面壁纸的设置等,在变化的背景图片下,需要我们自己去设置状态栏的颜色。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android
相关文章推荐