畢設日誌-039-040-劉海屏適配方案

公司復工第一週,最近受疫情影響,不能出門,學校規定不得返回學校與工作地,所以暫時在家辦公兩週。

這一週開始實現項目需求,由榮耀V30挖空屏引出的劉海屏適配問題。

 

    現在項目中的部分頁面已經有相關的劉海屏適配界面,所涉及的函數在FullScreenUtil和UIHelper兩個類裏,目前應用中全屏顯示的界面且適配全面屏的界面有RollPaperReadingActivity和VerticalReadingActivity,都繼承自BaseReadingActivity,另外ComicFastReadActivity未使用全面屏顯示,個人認爲應該與漫畫閱讀頁同步,也使用全面屏顯示並適配劉海屏。
    小說閱讀界面因爲需要顯示章節名和文字,所以不能使用劉海區域,防止劉海遮擋文字。


全面屏適配方案:


1、AndroidO

    AndroidO版本,google官方沒有提供適配劉海屏的API,所以項目中都是使用廠商自己的API來識別和適配劉海屏,項目中只針對華爲、小米、OPPO、VIVO四個廠商進行了優化,這四個廠商的劉海屏API最低適配版本均爲AndroidO,從這四個手機廠商官網找到對應的全屏但不佔用劉海的方案,目前只有小米、華爲提供了具體方法來設置是否佔用劉海區域,oppo和vivo只提供了機型是否是劉海屏手機的方法,但未提供適配方案。
相關文檔說明:
1、華爲:http://mini.eastday.com/bdmip/180411011257629.html# 
2、小米:https://dev.mi.com/console/doc/detail?pId=1293 
3、oppo:https://open.oppomobile.com/wiki/doc#id=10159 
4、vivo:https://dev.vivo.com.cn/documentCenter/doc/103 


 2、AndroidP

    AndroidP版本中,可以通過google官方提供的DisplayCutout類來對劉海屏機型機型適配
相關文檔說明:https://source.android.google.cn/devices/tech/display/display-cutouts?hl=zh_cn 

    


特殊情況:


華爲和小米的劉海屏機型可以在設置裏開啓隱藏劉海選項,打開隱藏劉海選項系統會將狀態欄設爲黑色,如果仍使用全面屏顯示,會導致整個頂部狀態欄區域被遮擋,所以這種情況建議不使用全面屏和劉海區。

 

工具類:NotchUtil


公共方法:
 `fun hasNotchScreen(activity : Activity) : Boolean`  //是否是劉海屏(GoogleAPI+廠商API)
 `fun hasNotchScreenO(context: Context): Boolean` //是否是劉海屏(廠商HMOV API)
 `fun isHideNotch(context: Context) : Boolean` //是否開啓隱藏劉海選項(小米、華爲)
 `fun setNotchConfig(activity: Activity)` //設置劉海屏,流程同上圖方案
......


ScreenUtil新增方法:
 `public static int getFullToolBarHeight(Activity activity)` //獲取頂部ToolBar的高度
 `public static int getFullToastBarHeight(Activity activity)` //獲取閱讀頁頂部Toast的高度

> 這兩個方法主要用作適配,對一些特殊機型和特殊情況的處理,防止頂部ToolBar和Toast被劉海遮擋,同時防止ToolBar和Toast高度過高。

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章