android 狀態欄的設置

現在開發APP,狀態欄是必備的。

沉浸式狀態欄只支持安卓4.4及以上的版本

狀態欄:4.4上是漸變色,5.0上是完全透明

透明效果:

全屏效果:(字體黑色,背景白色)

 

在values、values-v19、values-v21文件夾下的styles.xml設置Theme

透明:

    <style name="AppThemeFragment" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>

全屏:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">false</item>
        <item name="android:fitsSystemWindows">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    </style>

 

修改狀態欄的代碼:

    /**
     * 設置導航欄背景爲白色,字體圖標爲黑色
     * 說明:
     * 1. SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏顯示,但狀態欄不會被隱藏覆蓋。
     * 2. SYSTEM_UI_FLAG_LIGHT_STATUS_BAR:設置狀態欄圖標爲黑色或者白色
     * 3. StatusBarUtil 工具類是修改狀態欄的顏色爲白色。
     *
     * @param window
     * @param activity
     */
    public static void initStatusBar(Window window, Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                 window.getDecorView().setSystemUiVisibility(
                        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
            StatusBarUtil.setStatusBarColor(activity, R.color.white);
        }
    }

    /**
     * 修改狀態欄顏色,支持4.4以上版本
     *
     * @param activity
     * @param colorId
     */
    private static void setStatusBarColor(Activity activity, int colorId) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = activity.getWindow();
            window.setStatusBarColor(activity.getResources().getColor(colorId));
        }
    }

 

在onCreate()方法中設置:

透明:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window window = getWindow();
            window.getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
            window.setStatusBarColor(Color.TRANSPARENT);
    }

全屏:

        Window window = getWindow();
        // 設置狀態欄背景爲白色,字體圖標爲黑色
        StatusBarUtil.initStatusBar(window, this);

ok 代碼完畢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章