Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android沉浸式狀態欄、變色狀態欄、透明狀態欄、修改狀態欄顏色及透明

android沉浸式狀態欄、變色狀態欄、透明狀態欄、修改狀態欄顏色及透明

編輯:關於Android編程

首先我要區分清楚沉浸式狀態欄與變色狀態欄。

沉浸式狀態欄指的是,狀態欄隱藏,在手指做了相關操作後,狀態欄顯示出來,例如視頻播放器,在播放視頻時是隱藏狀態欄的,但是點擊屏幕的時候,狀態欄會顯示出來,再例如文本閱讀器,在閱讀的時候是全屏的,然後從屏幕上方下滑或者下方上劃,虛擬鍵和狀態欄出現了,但卻是直接覆蓋在程序文字上的,這是所謂的沉浸式狀態欄。
那麼大家平時所說的狀態欄與導航欄顏色相同,或者透明,指的是變色狀態欄,或者透明狀態欄。
對於這兩個概念的理解,大家可以參考http://www.androidchina.net/3520.html。

v19(4.4)以後開始支持android:windowTranslucentStatus屬性,透明狀態欄,而v21(5.0)以後出現變色狀態欄,可以自由設置狀態欄顏色。
通過這兩個新特性,可以幫助我們快速的實現4.4以後的狀態欄與app的導航欄顏色相同。

實現變色導航欄主要是通過styles裡面的theme來實現的:


    

接下來定義主題BaseAppTheme,繼承於上面定義的AppTheme.Base主題,該主題定義了三個顏色,分別指定狀態欄、toolbar和頁面中重點控件的顏色(顏色自己去定義)。

對於AppCompat主題中,各個顏色屬性的含義,可以參考下圖

這裡寫圖片描述

然後定義一個AppTheme,繼承於BaseAppTheme,

5.0:新建“values-v21\styles.xml”

在裡面定義適用與5.0系統的AppTheme,在5.0系統中提出的變色狀態欄,因此這裡我們只需定義一個AppTheme繼承於BaseAppTheme代碼如下:

運行的結果是,在4.4系統上,完全正常顯示,而在5.0上,toolbar正常顯示了透明色,但是狀態欄顯示的是灰色透明色
4.4系統:
這裡寫圖片描述

5.0系統:
這裡寫圖片描述
原因應該是,4.4系統支持的就是透明狀態欄,所以只需要將狀態欄顏色設為透明,即可到達效果。
而5.0支持的是變色狀態欄,得到的效果與我們預期不同,特做如下處理:

在代碼中設置,判斷當sdk大於等於5.0時,執行以下代碼

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

運行後,在4.4以及5.0系統上都能實現透明效果了,效果圖如下:
這裡寫圖片描述

源碼下載

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved