摘要:弊端需要給每個不想實現(xiàn)沉浸式的頁面新增多余且相似的代碼。弊端需要變化的值,導(dǎo)致頁面有細微的滑動。
需求
MainActivity中包含五個Fragment,但是只要求HomeFragment實現(xiàn)沉浸式,其余Fragment不實現(xiàn)沉浸式,保持原來的模樣
注意:僅Android21及其以上系統(tǒng)支持
思路前提:沉浸式只能作用在Activity上!
思路1 思路步驟使MainAcitivity實現(xiàn)沉浸式,此時所有Fragment頁面都將實現(xiàn)沉浸式;
為每一個Fragment頁面新增一個View,此處需要注意布局方式(FrameLayout布局可能比較難處理);
為每一個Fragment實現(xiàn)新增View的高度和背景色。
實現(xiàn)步驟1、使MainAcitivity實現(xiàn)沉浸式:
StatusBarUtil.setStatusBarTransparent(activity);
2、 為每一個不需要實現(xiàn)沉浸式的Fragment頁面新增一個View:
3、為每一個不需要實現(xiàn)沉浸式的Fragment實現(xiàn)新增View的高度和背景色:
StatusBarUtil.setStatusViewAttr(view, activity);優(yōu)缺點
優(yōu)點:可控性高;并且在布局文件中靜態(tài)實現(xiàn)了高度和背景色,不需要實時計算(此點相對于 思路2 而言)。
弊端:需要給每個不想實現(xiàn)沉浸式的Fragment頁面新增多余且相似的代碼。
思路2 思路步驟使MainAcitivity實現(xiàn)沉浸式,此時所有Fragment頁面都將實現(xiàn)沉浸式;
獲得DecorView之后,動態(tài)的為其子View設(shè)置topMargin,實現(xiàn)Fragment頁面切換時沉浸
實現(xiàn)步驟1、使MainAcitivity實現(xiàn)沉浸式:
StatusBarUtil.setStatusBarTransparent(activity);
2、使默認(rèn)第一個顯示的Fragment頁面實現(xiàn)沉浸式:
StatusBarUtil.createStatusView(activity); StatusBarUtil.hideStatusView(activity, true);
3、使其它Fragment不實現(xiàn)沉浸式,在實現(xiàn)沉浸式效果的Fragment中加入下面代碼:
@Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (hidden) { StatusBarUtil.hideStatusView(activity, false); } else { StatusBarUtil.hideStatusView(activity, true); } }優(yōu)缺點
優(yōu)點:可集成為一個工具類,不需要在Fragment中新增代碼。
弊端:需要變化topMargin的值,導(dǎo)致頁面有細微的滑動。
思路3還在搜索中......
源碼StatusBar
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/76749.html
摘要:前言我們先一起來回顧一下實現(xiàn)沉浸式狀態(tài)欄的一般套路。從以上版本才是真正的可以設(shè)置沉浸式體驗,但也僅僅是操作狀態(tài)欄和導(dǎo)航欄的顯示與隱藏。屬性解釋設(shè)置了表明會負(fù)責(zé)系統(tǒng)的繪制,繪制透明背景的系統(tǒng)狀態(tài)欄和導(dǎo)航欄,然后用和的顏色填充相應(yīng)的區(qū)域。 前言 我們先一起來回顧一下實現(xiàn)沉浸式狀態(tài)欄的一般套路。在Android上,關(guān)于對StatusBar(狀態(tài)欄)的操作,一直都在不斷改善,并且表現(xiàn)越來越好,...
閱讀 736·2025-02-07 13:40
閱讀 1047·2025-02-07 13:37
閱讀 1104·2024-11-06 13:38
閱讀 1194·2024-09-10 13:19
閱讀 1312·2024-08-22 19:45
閱讀 1491·2021-11-19 09:40
閱讀 2845·2021-11-18 13:14
閱讀 4422·2021-10-09 10:02