Android5.0以上實現全透明的狀態列(仿網易雲介面)
阿新 • • 發佈:2019-01-30
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); }