Android關於沉浸式的個人理解

Songlcy發表於2016-09-12

之前的專案中玩過幾次沉浸式的設計。最近看了hongyang和郭神的關於沉浸式的介紹,又有了新的認識。遂整理之。

Android機型的原因,我將分成兩部分,

(1)4.4之後5.0之前的版本。

         在4.4之後,Android提供了windowTranslucentStatus屬性,該屬性可以將statusbar即狀態列設定成半透明的狀態效果。我們只需要在values-v19下新增該屬性即可。

if(Build.VERSION.SDK_INT >= 19) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}

(2)5.0之後的版本。

        5.0之後,Android提供了setStatusbarColor()方法允許我們修改狀態列的顏色,但是修改狀態列顏色和windowTranslucentStatus屬性不能共存。所以,當我們要修改狀態列顏色的時候,我們需要去掉windowTranslucentStatus屬性。

Android中最多的設計還是利用狀態列區域,將佈局內容顯示到狀態列區域。如何實現呢?很簡單,只需要我們新增如下程式碼即可:

if(Build.VERSION.SDK_INT >= 21) {
    View decorView = getWindow().getDecorView();
    int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
    decorView.setSystemUiVisibility(option);
}

上面分別為19,21的不同使用方式,不過基本大同小異。在開啟了透明狀態列之後,還需要對我們的佈局檔案進行修改,預設情況下佈局內容是會佔據狀態列區域,在佈局檔案中設定fitsSystemWindows為true即可。

ok,以上就我是我個人理解。

相關文章