1. 程式人生 > >Android5.0以上實現全透明的狀態列(仿網易雲介面)

Android5.0以上實現全透明的狀態列(仿網易雲介面)

Android4.4以上要實現沉浸式狀態列可以通過在style檔案設定

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowTranslucentStatus">true</item>
 </style>
就能得到透明的狀態列,比較網易雲音樂的介面會發現網易雲的狀態列是全透明的,而通過設定windowTranslucentStatus得到的狀態列背景始終是半透明的矩形。所以狀態列顏色會比toolbar顏色深一點(Material Design)

狀態列顏色深一點

狀態列和toolbar顏色是相同的。


為了達到同樣的效果,搜尋了挺多方法,找到一段程式碼比較合適。使用如下程式碼。然後佈局檔案加上paddingtop屬性,設定為25dp。注意佈局檔案裡不需要設定fitSystemWindows屬性。設定以後就實現了網易雲音樂的介面效果了。

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            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);
        }