Android 主流 app 的沉浸式效果

2021-10-08 22:24:29 字數 2673 閱讀 1323

什麼是沉浸式呢?就是狀態列透明,將 activity 布局延伸到整個螢幕,所呈現的一種模式效果。

白底黑字式

android5.0以上狀態列透明的**示例:

if

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

考慮到狀態列被設定為透明後,狀態列上的文字和圖示存在看不清的情況。android6.0以上,系統提供了api 來修改狀態列的字型背景色:

if

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

關於沉浸式,難點在於特殊機型的適配工作上。例如小公尺和魅族手機,在 android4.4 版本之後,flag_translucent_status 標誌位便顯示為全透明效果,而且自 android4.4 之後,其便提供了設定狀態列圖示和文字顏色的內部方法。

特殊(1)魅族

/**

* 設定狀態列字型圖示顏色

** @param activity 當前activity

* @param dark 是否深色 true為深色 false 為白色

*/public

static

void

setstatusbardarkicon

(activity activity,

boolean dark)

特殊(2)oppo

詳情參考開放平台,對 android 版本是 6.0 及以後的 oppo 機型,使用 google 提供view.system_ui_flag_light_status_bar 的 flag 來設定狀態列圖示黑色顯示效果。

對 android5.1 版本並且是 coloros3.0 的 oppo 機型使用 coloros 提供 system_ui_flag_op_status_bar_tint 的 flag 來設定狀態列圖示黑色效果,由於該標記未公開,開發者需要在應用**中定義。

final

int system_ui_flag_op_status_bar_tint =

0x00000010

; window window =

getwindow()

; window.

addflags

(windowmanager.layoutparams.flag_draws_system_bar_backgrounds)

; window.

getdecorview()

.setsystemuivisibility

(system_ui_flag_op_status_bar_tint)

;

為方便開發者對於 oppo 機型的反色適配,提供了用於設定狀態列顯示效果的介面方法,開發者可以根據應用需要動態設定狀態列圖示為白色或是黑色。介面傳入值 ture 時狀態列圖示為黑色,介面轉入值為 false 狀態列圖示為白色:

public

void

setlightstatusbaricon

(boolean lightmode)

else

}else

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

else

} window.

getdecorview()

.setsystemuivisibility

(vis)

;}

特殊(3)小公尺

詳情參考開放平台,在 android 6.0 以前,android 沒有方法可以實現「狀態列黑色字元」效果,因此 miui 自己做了乙個介面。在 android 6.0 及以上版本,android 提供了標準的方法實現「狀態列黑色字元」效果,但這個方法和 miui 的方法產生了衝突。

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

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)

;

在舊的 miui 版本,仍然需要使用 miui 原有的方法,即:

public

void

setstatusbardarkmode

(boolean darkmode, activity activity)

catch

(exception e)

}

待續

Android 中的沉浸式

1.在kotlin語言使用 statusbarutil.companion.immersive this statusbarutil.companion.setpaddingsmart this,viewbyid kotlin語言下程式設計 class statuscommbarutil catch...

最主流的APP測試

概念 移動應用服務,就是針對手機這種移動連線到網際網路的業務或者無線網絡卡業務而開發的應用程式服務 裝置 智慧型手機 平板電腦 智慧型手錶 網路 無線 wifi 平台 andriod ios 使用者關注點 場合複雜程度 輸入種類 操作準度 介面布局 登入測試 登陸測試 登出測試 執行測試 切換測試 ...

Android 沉浸式 體驗

首先宣告一下這個叫法應該是不對的,translucent翻譯過來的是半透明效果,不是ios的那種什麼沉浸式 首先要明確1個概念,在android上,沉浸式 叫沉浸式全屏模式以及透明化系統狀態列其實這個也沒啥好說的,不管你是android粉還是ios粉,在日常玩機的過程中,都見過這種介面效果 強調一下...