毕设日志-039-040-刘海屏适配方案

跟風遠走 提交于 2020-02-17 19:00:19

公司复工第一周,最近受疫情影响,不能出门,学校规定不得返回学校与工作地,所以暂时在家办公两周。

这一周开始实现项目需求,由荣耀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高度过高。

 


 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!