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

最近开发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  
来源:CSDN  
原文:https://blog.csdn.net/csuhanshuai/article/details/52648671  
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值