亲测,提供修改状态栏和虚拟键的4个方法
1.设置状态栏背景色
2.设置状态栏文字颜色是否为亮色
3.设置状态栏是否隐藏
4.设置虚拟按键栏背景是否透明
4个方法可以随意组合实现
代码如下:
/**
* 设置状态栏样式
*
* @param window
*/
public static void initSystemBarTint(Window window) {
try {
if (isStatusBarHidden()) { //获取状态栏是否隐藏
window.addFlags(1024);
} else {
window.clearFlags(1024);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isLightColor()) { //获取状态栏字体是否为亮色
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
} else {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
if (getStatusBarColor()) { //获取状态栏背景设置的色值
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ) {
if (isLightColor()){
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_VISIBLE);
}else {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.addFlags(67108864);
window.addFlags(134217728);
window.addFlags(Integer.MIN_VALUE);
window.clearFlags(67108864);
window.setStatusBarColor(shanYanUIConfig.getStatusBarColor());
window.setNavigationBarColor(shanYanUIConfig.getStatusBarColor());
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && isVirtualKeyTransparent()) { //获取虚拟键是否透明
window.clearFlags(134217728);
window.addFlags(-2147483648);
window.setNavigationBarColor(0);
window.getDecorView().setSystemUiVisibility(window.getDecorView().getSystemUiVisibility() | 0x200);
}
} catch (Exception e) {
e.printStackTrace();
Log.d("initSystemBarTint", "initSystemBarTint====" + e.toString());
}
}