安卓透明狀態列的實現

2021-08-03 16:54:56 字數 2295 閱讀 8037

其實要實現透明狀態列只需要給window 設定flags屬性,讓應用的主體內容占用系統狀態列的空間,最後再呼叫window的setstatusbarcolor()方法將狀態列設定成透明色就可以了,而setstatusbarcolor()只有版本大於等於5.0才可以呼叫,適配的時候而有的5.0手機也有不支援此方法的,所以當低於6.0時,我們建立乙個和狀態列大小相等的view,覆蓋在狀態列的位置,然後給這個view設定顏色和透明度。

值得注意的是,設定flags屬性只適用於4.4以上版本,有一部分4.4手機也不支援此方法,所以適配5.0及以上即可。下邊上**:

public

class

lzhstatusbarutils

///** * 設定透明狀態列版本的狀態列的argb

*@param activity

*@param topview

*@param r

*@param g

*@param b

*@param alpha

*/public

static

void

setargbstatusbar(activity activity, view topview, int r, int g, int b, int alpha)

if (build.version.sdk_int >= build.version_codes.m) else

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

else

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

if (topview != null) }}

///** * 在有fragment的activity中使用

* 注:需要在有狀態列的fragment的最頂端加乙個狀態列大小的view

**@param activity

*@param alpha

*/public

static

void

settranslucentforimageviewinfragment(activity activity, int alpha)

///** * 設定狀態列view的argb,如果找到狀態列view則直接設定,否則建立乙個再設定

**@param activity

*@param statusbaralpha

*/private

static

void

setargbstatusviewtoact(activity activity, int r, int g, int b, int statusbaralpha)

fakestatusbarview.setbackgroundcolor(color.argb(statusbaralpha, r, g, b));

} else }//

/** * 建立和狀態列一樣高的矩形,用於改變狀態列argb

**@param activity

*@param r

*@param g

*@param b

*@param alpha

*@return

*/private

static view createargbstatusbarview(activity activity, int r, int g, int b, int alpha)

///** * 得到statusbar高度

**@param activity

*@return

*/private

static

intgetstatusbarheight(activity activity)

}

呼叫的話只需要 lzhstatusbarutils.settranslucentstatusbar(this,null,10);就可以了。

知識補充: gif圖上的導航欄漸變效果

因為運用的recyclerview,而recyclerview有乙個滑動監聽方法,不囉嗦上**.

rc.addonscrolllistener(new recyclerview.onscrolllistener()  else 

}});

在這個方法進行滑動監聽,根據距離設定透明度。

安卓4 4實現透明狀態列

首先,我們要知道的是,在安卓5.0.1開始,狀態列就已經是透明的了,所以我們需要手動修改狀態列為透明的安卓版本只有4.4和5.0 4.4以下不支援透明狀態列 先看styles.xml true 以上兩行 只在安卓4.4以上有效 執行 你會發現你的ui元件被狀態列覆蓋了,但不用擔心,只要在你的acti...

安卓沉浸式狀態列

public class statusbarcompat return 當前手機版本為4.4 if build.version.sdk int build.version codes.kitkat build.version.sdk int build.version codes.lollipop ...

安卓頂部 白色狀態列

1 首先在xml檔案中新增控制項 2 建立工具類 判斷使用者手機型號 檢視 使用者機型 public class osutils public static boolean isflyme public static boolean check string rom if textutils.ise...