1. 程式人生 > 其它 >Android UI 狀態列沉浸式及字型顏色設定

Android UI 狀態列沉浸式及字型顏色設定

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);
    }
}