關於MIUI 9沉浸式狀態列的最新適配

2021-08-19 11:17:33 字數 1576 閱讀 5802

最近更新了最新的miui 9 系統,安裝上公司的應用之後,發現之前適配過的沉浸式狀態列忽然沒有效果了,感覺很鬱悶的我於是去網上搜了一下關於小公尺手機狀態列適配方面的文章,發現大部分文章都還是之前的適配方案:

public

void

setstatusbardarkmode

(boolean

darkmode, activity activity) catch

(exception e)

}

於是乎就自己去小公尺的開放平台逛了逛,然後就找到了問題所在:

1、在 android 6.0 以前,android 沒有方法可以實現「狀態列黑色字元」效果,因此 miui 自己做了乙個介面。

2、在 android 6.0 及以上版本,android 提供了標準的方法實現「狀態列黑色字元」效果,但這個方法和 miui 的方法產生了衝突,以致於當開發者使用 android 標準方法時,沒有出現預期的效果,這給很多開發者都造成了困擾,尤其是海外開發者。

為了解決這個問題,小公尺覺決定在miui 9之後相容android 官方的標準方案,捨棄了自己的方案,所以說,對於miui9 以上版本的使用者,對於手機狀態列深色字型的實現需要重新適配,小公尺官方也給出了最新的適配方案。

在新的 miui 版本(即基於 android 6.0 ,開發版 7.7.13 及以後版本):

狀態列深色字型:

window window = getwindow();

window.addflags(windowmanager.layoutparams.flag_draws_system_bar_backgrounds);

window.clearflags(windowmanager.layoutparams.flag_translucent_status);

window.getdecorview().setsystemuivisibility(view.system_ui_flag_light_status_bar);

狀態列白色字型:

int

flag = window.getdecorview().getsystemuivisibility() & ~view.system_ui_flag_light_status_bar;

window.getdecorview().setsystemuivisibility(flag);​

但是為了繼續適配之前的miui系統 需要在使用的時候同時寫上以上兩種方案

最後實現**如下:

public

void

setstatusbardarkmode

(boolean

darkmode, activity activity) else

} catch

(exception e)

}

修改為以上**之後,終於又看到了熟悉的沉浸式效果!

**:

沉浸式狀態列

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...