三步實現沉浸式狀態欄(即狀態欄與APP同色)

          本篇實現的是沉浸式狀態欄。先明確下概念,什麼是狀態欄?直接上圖:

      

        什麼是沉浸式狀態欄?示例圖如下:

                              非沉浸式狀態欄                                                                        沉浸式狀態欄                           

               

        其實,實質上就是使手機狀態欄的顏色改變,使其成爲自己想要的顏色。如果把它設置成和APP主色調相同,這樣看上去就會好看許多。至於叫法,網上都這麼叫,就不用深究它了。下面介紹如何實現,其實很簡單,只需三步:

       前提:建立的安卓工程必須是API 19以上的才行,也就是Android4.4版本以上。

       步驟1:

       在佈局文件的最外層Layout上加上兩個屬性, 

       android:clipToPadding="true"
       android:fitsSystemWindows="true"

       示例:

     

      步驟2:

      在Activity的onCreate()方法中加入兩行代碼:

       getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  //透明狀態欄
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  //透明導航欄

      步驟3:

      在Activity的onCreate()方法中加入一行代碼:

      requestWindowFeature(Window.FEATURE_NO_TITLE); //設置無標題欄

     注意:此句代碼一定要加在 setContentView(R.layout.activity_main);之前。

      示例:

      

    

       通過以上三步簡單的操作,這樣就可以實現狀態欄變色啦!


     備註:

     一、其實,只需要加入

       getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  //透明狀態欄
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  //透明導航欄

      這兩行代碼就能改變狀態欄顏色。

      但是,會出現狀況。

      狀況1(如果佈局文件中不加  android:clipToPadding="true"    android:fitsSystemWindows="true"  這兩個屬性)

       

      可以看到,標題欄會整體往上移動,佔據狀態欄的空間。也就是將狀態欄當成了APP標題欄的一部分。


      狀況2(如果onCreate()方法中不加  requestWindowFeature(Window.FEATURE_NO_TITLE);  這句代碼

       

     可以看到,佈局多了系統自帶的title欄,一般情況下這是不需要的。

     

     二、在步驟3中,requestWindowFeature(Window.FEATURE_NO_TITLE); 這句代碼的設置可以不設置在onCreate()方法中,設置成配置文件的theme樣式也是可以的,但是要和你的Activity相匹配,示例如下:

    

     

     三、狀態欄的顏色,就是佈局文件中最外層的佈局的背景顏色。但是,如果最外層的Layout設置寬高都是                    match_parent,而其子佈局未設置任何背景顏色,

     

     這樣的話,就會使整塊屏幕(包括狀態欄)都是一個顏色,

     如下圖:

     

     當然,有時候我們需要將除了標題區域以外的內容區域設置成和APP主色不同的顏色。這時,只需要將需要改變背景顏色的子佈局設置一下背景顏色就行啦。

      

     運行效果如下:

     

   通常,這樣就是我想要的效果。每個人需求不同,大家自行發揮。

     

    

    

     


發佈了27 篇原創文章 · 獲贊 111 · 訪問量 58萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章