沉浸式状态栏时,Activity加载了多个Fragment,每个Fragment的 顶部背景色不同,
需要根据背景色的深浅,设置状态栏图标和文字的颜色。
var flag = false//方便测试,可根据实际情况修改
private fun setStatusBar() {
if (flag) {
// 实现状态栏图标和文字颜色为暗色
Log.d("caowj", "暗")
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
} else {
Log.d("caowj", "亮")
// 实现状态栏图标和文字颜色为亮色
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv()
}
flag = !flag
}
/**
* 判断颜色深浅的方法
* @param color Int
* @return Boolean
*/
fun isDarkBackground(color: Int): Boolean {
return ColorUtils.calculateLuminance(color) < 0.5
}