1. 程式人生 > >沈浸式狀態欄使用記錄

沈浸式狀態欄使用記錄

灰色 stat nds pop 空間 out screen 主體 情況

//狀態欄類型
public static final int STATUSBAR_TYPE_TRANSPARENT_WHITE = 1; //狀態欄類型為透明底部,白色字體圖標
public static final int STATUSBAR_TYPE_WHITE_BLACK = 2; //狀態欄類型為白色底部,黑色字體圖標
public static void setStatusBar(Activity pActivity, int pStatusbarType) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//5.x開始需要把顏色設置透明,否則導航欄會呈現系統默認的淺灰色
Window window = pActivity.getWindow();
View decorView = window.getDecorView();
//兩個 flag 要結合使用,表示讓應用的主體內容占用系統狀態欄的空間
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
if (pStatusbarType == STATUSBAR_TYPE_WHITE_BLACK) {
option |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
decorView.setSystemUiVisibility(option);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

if (pStatusbarType == STATUSBAR_TYPE_WHITE_BLACK) {
//背景
window.setStatusBarColor(Color.WHITE);
} else if (pStatusbarType == STATUSBAR_TYPE_TRANSPARENT_WHITE) {
//背景
window.setStatusBarColor(Color.TRANSPARENT);
}
//底部導航欄顏色
// window.setNavigationBarColor(Color.TRANSPARENT);
// window.setNavigationBarColor(ContextCompat.getColor(activity, R.color.black));
} else {
//以下這種情況沒有測試過
/* if (pStatusbarType == UtilsKey.STATUSBAR_TYPE_WHITE_BLACK) {
setStatusBar2(pActivity);
} else if (pStatusbarType == UtilsKey.STATUSBAR_TYPE_TRANSPARENT_WHITE) {*/
Window window = pActivity.getWindow();
WindowManager.LayoutParams attributes = window.getAttributes();
int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
attributes.flags |= flagTranslucentStatus;
/*int flagTranslucentNavigation = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
attributes.flags |= flagTranslucentNavigation;*/
window.setAttributes(attributes);
// }
}
}
}

public static void setStatusBar2(Activity pActivity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
pActivity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
pActivity.getWindow().setStatusBarColor(Color.WHITE);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
pActivity.getWindow().setStatusBarColor(ContextCompat.getColor(pActivity, R.color.translucent));
}
pActivity.getWindow().setNavigationBarColor(ContextCompat.getColor(pActivity, R.color.black));
}
}

沈浸式狀態欄使用記錄