设置状态栏透明,需要适配5.0和4.4,添加单独判断逻辑
private void modifyWindowStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//5.0 全透明实现
Window window = getActivity().getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//4.4 全透明状态栏
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
设置状态栏颜色适配暗黑模式,色值通过参数传入
public static void updateStatusBarColor(Window window, int colorInt, boolean isDarkTitle) {
LoggerFactory.getTraceLogger().debug("ImmersiveModeUtil", "updateStatusBarColor:window = [" + window + "], colorInt = [" + colorInt + "]");
try {
if (Build.VERSION.SDK_INT >= 23 && window != null) {
window.addFlags(-2147483648);
window.clearFlags(67108864);
window.setStatusBarColor(colorInt);
View decorView = window.getDecorView();
if (decorView != null) {
if (isDarkTitle) {
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() | 8192);
} else {
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & -8193);
}
}
}
} catch (Exception var5) {
Map<String, String> map = new HashMap();
if (window != null && window.getContext() != null) {
map.put("context", window.getContext().toString());
}
map.put("exception", var5.toString());
LoggerFactory.getMonitorLogger().mtBizReport("BIZ_LAUNCHER", "ImmersiveModeUtil", "updateStatusBarColor_failed", (Map) null);
}
}
public static void updateStatusTextColor(Window window, boolean isDarkTitle) {
LoggerFactory.getTraceLogger().debug("ImmersiveModeUtil", "updateStatusBarColor:window = [" + window + "], isDarkTitle = [" + isDarkTitle + "]");
try {
if (Build.VERSION.SDK_INT >= 23 && window != null) {
View decorView = window.getDecorView();
if (decorView != null) {
if (isDarkTitle && (!AUTokenManager.isSupportDarkMode(window.getContext()) ||
!AUTokenManager.isDarkMode(window.getContext()))) {//当暗黑模式时状态栏不允许设置成黑色
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() | 8192);
} else {
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & -8193);
}
}
}
} catch (Exception var5) {
AliUserLog.e(TAG, var5);
}
}