
近期研究QMUI換膚的實作,順便分析了下QMUI的沉浸式,
網上已有很多關于QMUI實作頁面沉浸式的文章,簡而言之:復雜了,
本期,我們僅通過幾行代碼,即可完美實作頁面沉浸式效果,并輕松匹配換膚的色彩,
1、工程
為了節省時間,我們就不再單獨新建工程了,直接基于上期QMUI換膚的工程代碼,進行開發,
demo原始碼下載在該文章中:《Android QMUI實戰:實作APP換膚功能,并自動適配手機深色模式》
https://www.cnblogs.com/qixingchao/p/15417834.html
注意事項:在工程的gradle中有依賴QMUI,如果想以自己的工程進行沉浸式開發實驗,請先在gradle中配置QMUI依賴:
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
2、實作頁面沉浸式的代碼
僅1行即可:QMUIStatusBarHelper.translucent(this);


分析原始碼,不難看出,QMUI已對不同版本的設備進行了適配,沉浸式配置管理主要包括:
1、FLAG_TRANSLUCENT_STATUS:狀態欄透明,并且變為全屏模式
2、FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS:Window負責系統bar的background 繪制,繪制透明背景的系統bar(狀態欄和導航欄),然后用getStatusBarColor()和getNavigationBarColor()的顏色填充相應的區域
3、setStatusBarColor(Color.TRANSPARENT):設定狀態欄顏色透明(直接透視,并可見到父容器的顏色)
)
設定后的效果圖:

3、預留出狀態欄的空間:
上圖中,狀態欄與頁面的Topbar重合了,我們需要為頁面預留出狀態欄的空間,
實作方式很簡單,也是一行代碼:android:fitsSystemWindows="true"

設定后的效果圖:

3、設定狀態欄與頁面Topbar一樣的顏色:
上圖中,狀態欄的空間雖然預留出來了,但是狀態欄顏色與頁面Topbar不一致,不美觀,
我們可以調整下布局檔案,將父容器背景色調整為與Topbar一樣的色彩即可,
這樣調整后,父容器顏色變成深色了,但是常規設計中,頁面背景色都是淺色,那么我們可以再為頁面內容套一層,并設定淺色,如自定義的:?attr/colorPrimary

設定后的效果圖:

4、匹配換膚的色彩
我們只需要在布局檔案中設定顏色時,使用QMUI的Skin屬性即可,例如:app:qmui_skin_background,
5、總結
至此,QMUI實作頁面沉浸式效果演示結束,
我們不需要關心各種Android版本、各種機型的適配,只需要簡單的呼叫即可,代碼也簡潔易維護,
了解了QMUI的沉浸式程序,我們也可實作更復雜的沉浸式效果,例如容器背景是圖片、是漸變色等等,
因為布局檔案完全由我們自主管控,想怎么寫就怎么寫,吼吼!!!
demo原始碼:
鏈接: https://pan.baidu.com/s/1NAuVowHuXMBeQNWX82mZkQ
提取碼: b5x3
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/320959.html
標籤:其他
