关于Android沉浸式状态栏字体颜色和图片背景自适应变化
2016-09-24 10:37
711 查看
最近开发Android音乐,遇到关于沉浸式状态栏的问题,当音乐封面背景图片和状态栏融合到一起时,如果状态栏的字体设置为白色或者浅色,这时背景图片的颜色也是白色,导致状态栏的字体几乎看不到的问题。如下图
这时,如果只是单纯的设置状态栏的字体颜色,这样是不行,因为每播放一首歌,他得封面是不同的,有的颜色深,有的颜色浅,这时候要去判断背景图片的bitmap值,来设置不同的状态栏字体颜色,即所谓的自适应。
核心代码如下:
这里主要是获取图片背景的背景色值,然后加以判断
就可以实现不同情况下的状态栏显示。
总而言之,在很多情况下,这个还是必须的,例如桌面壁纸的设置等,在变化的背景图片下,需要我们自己去设置状态栏的颜色。
这时,如果只是单纯的设置状态栏的字体颜色,这样是不行,因为每播放一首歌,他得封面是不同的,有的颜色深,有的颜色浅,这时候要去判断背景图片的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 沉浸式状态栏-字体颜色与背景颜色修改实现与兼容
- Android沉浸式标题栏状态栏字体颜色修改(小米和魅族以及Android6.0)
- Android如何让TextView子元素随着父元素的背景变化而改变字体颜色?
- 关于vc中Button的颜色字体与背景图片的修改
- android标题栏、状态栏图标文字颜色及背景动态变化
- android颜色关于Android TabHost切换Tab字体的颜色背景颜色改变
- Android---Tablayout自定义Tab的背景和字体的颜色变化
- Android系统状态栏字体颜色在暗色背景和亮色背景下的改变方法
- Android Studio Gradle多渠道打包(动态设定App名称,应用图标,背景图片,状态栏颜色)、配置签名文件
- 改变Android状态栏字体颜色和实现沉浸式状态栏
- Android---Tablayout自定义Tab的背景和字体的颜色变化
- android 隐藏状态栏和修改状态栏的背景颜色(沉浸式状态栏)
- 关于Android TabHost切换Tab字体的颜色背景颜色改变
- Android-->沉浸式状态栏字体颜色的修改(只针对小米和魅族)
- [置顶] android白色背景状态栏字体颜色
- 状态栏 设置 ---设置图片沉浸式状态栏,改变状态栏字体颜色
- Android textview字体颜色显示和图片显示
- Android 部分内容设置颜色、字体、超链接、图片
- fedora16为grub2添加、修改背景图片和字体颜色
- Android之自定义背景Button按钮、自定义形状Button的全攻略、设置字体颜色