Android UI 狀態列沉浸式及字型顏色設定
阿新 • • 發佈:2022-03-26
public class UtilsStatusBar { //沉浸式 public static void setImmerseStatusBar(Activity activity) { Window window = activity.getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); int option = window.getDecorView().getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; window.getDecorView().setSystemUiVisibility(option); window.setStatusBarColor(Color.TRANSPARENT); } //enable 淺色狀態列,白色字型 public static void setLightStatusBar(Activity activity, boolean enable) { View decorView = activity.getWindow().getDecorView(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int systemUiVisibility = decorView.getSystemUiVisibility(); boolean hasLightFlag = (systemUiVisibility & View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) != 0; if (enable) { if (!hasLightFlag) { decorView.setSystemUiVisibility(systemUiVisibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } } else { if (hasLightFlag) { decorView.setSystemUiVisibility(systemUiVisibility ^ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } } } } /** * 設定底部導航欄顏色 * @param window * @param color */ public static void setNavigationBarColor(@NonNull Window window, @ColorInt int color) { window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setNavigationBarColor(color); } }