沉浸式狀態列解析

2021-09-11 21:14:42 字數 1836 閱讀 4461

用過度重繪就可以很明顯的看到這個結論 借用黃老師的掌閱來說明這個問題。

android api 19-20

1. 全屏設定 getwindow().addflags(windowmanager.layoutparams.flag_translucent_status)

2. 通過 fitssystemwindows=true 保留 padding,設定 window 的背景色

2. 或者在 decorview 上新增 view 設定背景色

複製**

1.getwindow().setstatusbarcolor(color.red) 即 colorprimarydark

複製**

android api 19-20

1. 全屏設定 getwindow().addflags(windowmanager.layoutparams.flag_translucent_status)

2. 通過 fitssystemwindows=true 保留 padding,設定 window 漸變的 drawable

複製**

1. 全屏設定 getwindow().getdecorview().setsystemuivisibility(view.system_ui_flag_layout_fullscreen | view.system_ui_flag_layout_stable);

2. statusbar 顏色透明 getwindow().setstatusbarcolor(color.transparent);

3. 通過 fitssystemwindows=true 保留 padding,設定 window 的漸變的 drawable

複製**

android api 19-20

1. 全屏設定 getwindow().addflags(windowmanager.layoutparams.flag_translucent_status)

2. 通過 fitssystemwindows=true 保留 padding, 設定 window 的背景圖

複製**

1. 全屏設定 getwindow().getdecorview().setsystemuivisibility(view.system_ui_flag_layout_fullscreen | view.system_ui_flag_layout_stable);

2. statusbar 顏色透明 getwindow().setstatusbarcolor(color.transparent);

3. 通過 fitssystemwindows=true 保留 padding,設定 window 的背景圖

複製**

直接在theme中設定fitssystemwindows

"android:fitssystemwindows">true

複製**

建議在baseactivity中的oncreate設定

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

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

getwindow().setbackgrounddrawableresource(r.drawable.bg_bar);

複製**

全屏、沉浸式、fitsystemwindow使用及原理分析:全方位控制「沉浸式」的實現

沉浸式狀態列

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