總結(jié):
1.從android4.4版本開始可以實(shí)現(xiàn)沉浸式狀態(tài)欄的功能,4.4和5.0以上的效果會(huì)有點(diǎn)不一樣,所以可以選擇使用在view來(lái)代替狀態(tài)欄背景,這樣就一致了;
2.在白色背景的情況下默認(rèn)狀態(tài)欄是白色,需要設(shè)置狀態(tài)欄和圖標(biāo)顏色,而在6.0以上則是可以設(shè)置狀態(tài)欄的圖標(biāo)字體的顏色的,然而魅族和小米是有另外自己的字體修改api的,所以這個(gè)修改字體深淺需要原生和魅族小米三個(gè)一起設(shè)置;
3.在代碼中實(shí)現(xiàn)上述代碼是因?yàn)閲?guó)內(nèi)有些 rom 如果單純?cè)?style 文件中設(shè)置 windowTranslucentStatus 可能導(dǎo)致設(shè)置無(wú)效。所以在 Activity 中再次設(shè)置一遍 。
4.單單設(shè)置windowTranslucentStatus 只是半透明的效果,有的機(jī)型是灰色的半透明,有的則是全透明,單獨(dú)設(shè)置狀態(tài)欄顏色,可使用以下代碼實(shí)現(xiàn)沉浸式效果:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setStatusBarColor(Color.TRANSPARENT);// SDK21
5.在5.0以后可以通過(guò)設(shè)置主題顏色來(lái)設(shè)置一些app的默認(rèn)顏色;
以下是一張主題顏色的圖片:

顏色.png