實現沉浸式狀態列

2021-08-08 09:13:55 字數 1422 閱讀 6382

android從4.4的版本開始,就可以自己來定義狀態列的顏色了,下面,我們來看一下實現方式:

1:沉浸式狀態列的實現方式:

/**

* 設定狀態列的顏色

* 分為兩種情況

* 1:當當前sdk版本在5.0及其以上版本中,直接設定狀態列顏色就可以(有對應的方法)

* 2:當當前sdk版本在4.4到5.0之間時,則需要向設定當前狀態列為全屏,

* 然後給其新增乙個與statusbar同等高度的view並設定padding值來處理

*@param activity

*@param color

*/public

static

void

setstatusbarcolor(activity activity,int color)

//2:sdk>=4.4

else

if(build.version.sdk_int >= build.version_codes.kitkat)

}public

static

intgetstatusbarheight(activity activity)

上面就是實現的方法了,在實現的時候,我們需要判斷當前手機的版本,如果在5.0及以上版本,是直接有方法來設定的。如果是介於4.4到5.0之間的版本,那就需要通過建立乙個與statusbar等高的view來佔位設定了!

最後:上一張效果圖:(設定了比較明顯的顏色,能夠看得更清楚些)

2:下面,我們來看一下另外一種情況:

有的時候,為了介面美觀以及一些其他原因,會有如下需求:

可以看到的是,我們這裡已經全屏顯示了,但是,電量型號等圖示還是顯示的,這種情況下,直接設定當前介面為全屏是不能夠滿足這種需求的:

下面,來看一下實現方法:

//設定螢幕為全屏且顯示手機電量等圖示

public static void setactivitytranslucent(activity activity)else if(build.version

.sdk_int >= build.version_codes.kitkat)

}

這個情況正好和沉浸式狀態列的相反,在sdk版本在4.4-5.0之間,有直接的設定方法,而在5.0以上,需要我們自己來實現,實現過程為,首先,獲取到當前activity的decorview,然後,給decorview設定system_ui_flag_layout_fullscreen該屬性,然後再將狀態列的顏色設定為透明色!

沉浸式狀態列

1.沉浸式狀態列,向下相容到android4.4。因為5.0以後對狀態列做了新的改變,5.0及其以上可以直接在主題中設定顏色,或者呼叫window類中的setstatusbarcolor int color 來實現。2.4.4到5.0系統可以通過 windowtranslucentstatus這一特...

沉浸式狀態列

還好擼主機智,直接判斷你的android版本,根據版本設定導航欄的高度,是和尚就念經,是驢子就拉磨,下面是擼主的 true animated barstyle light content networkactivityindicatorvisible 導航欄,用的功能強大的第三方庫 native b...

沉浸式狀態列

狀態列透明方法 getwindow addflags windowmanager.layoutparams.flag translucent status 或 itemname android windowtranslucentstatus trueitem 第一種方法是在 中設定,在setcont...