1. 程式人生 > >Android 沉浸式體驗

Android 沉浸式體驗

安卓沉浸式體驗是一個很早就提出的概念,對此本人對其的理解其實是頁面UI變化的平滑性的體驗,不是那種突兀的跳轉,也有人說這個最早的解釋是頁面全屏,讓頁面內容充滿螢幕,但隨著時間的演變大部分情況下,沉浸式體驗可以狹隘的理解為,手機狀態列和app標題欄顏色相同,本文就簡單介紹一種平時本人常用的一種很簡單的是實現方式:狀態列設定透明

1、平時我們寫程式碼的習慣都會在專案中設定一個BaseActivity,用來實現一些activity的共有操作,此時正好用到

       再baseActivity中的佈局中新增一個20dp的view(狀態列的高度一般就是20dp),view的背景色就設定為你的標題欄顏色

2、在BaseActivity中將狀態列設定為透明,由於用到的setStatusBarColor方法只支援5.0以上系統,因此需要判斷系統版本號

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    View decorView = getWindow().getDecorView();
    //讓應用主題內容佔用系統狀態列的空間,注意:下面兩個引數必須一起使用 stable 牢固的
    int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
    decorView.setSystemUiVisibility(option);
    //設定狀態列顏色為透明
    getWindow().setStatusBarColor(Color.TRANSPARENT);
    tvFullTop.setVisibility(View.VISIBLE);//這就是1 中的那個20dp高的view
}

3、如果一個app中標題欄顏色並不統一,或者有的頁面沒有標題欄,如果控制頂部填充view的顏色呢?很簡單在BaseActivity中宣告一個抽象方法來獲取標題欄顏色,在對應的activity中重寫此方法,返回對應顏色

public abstract int getTitleBarColor();

然後在設定狀態列為透明後,設定填充view顏色為 返回的顏色色值。

此文章只是簡單隨筆,沉浸式狀態列有很多種實現方式,此種是較簡單的一種,僅供參考