Android适配全面屏/刘海屏
目前国内厂商已经推出的刘海屏Android手机有华为P20 pro, vivo X21,OPPO R15。
1.华为刘海屏的官方适配文档
https://devcenter-test.huawei.com/consumer/cn/devservice/doc/50114
2.oppo刘海屏官方文档:
https://open.oppomobile.com/service/message/detail?id=61876
3.vivo刘海屏官方文档:
https://dev.vivo.com.cn/doc/document/info?id=103
vivo 和 OPPO官网仅仅给出了适配指导,没有给出具体方案,简单总结为:
如有是具有刘海屏的手机,竖屏显示状态栏,横屏不要在危险区显示重要信息或者设置点击事件
4.google官方刘海屏适配方案
google从Android P开始为刘海屏提供支持,目前提供了一个类和三种模式:
一个类
The new DisplayCutout
class lets you find out the location and shape of the non-functional areas where content shouldn't be displayed. To determine the existence and placement of these cutout areas, use thegetDisplayCutout()
method
就是说可以用DisplayCutout这个类找出刘海(cutout)的位置和形状,调用getDisplayCutout()这个方法可以获取刘海(cutout)的位置和区域
所以我们可用这个类判断是否有刘海的存在以及刘海的位置
DisplayCutout cutout = mContext.getDisplayCutout();
三种模式
A new window layout attribute, layoutInDisplayCutoutMode
, allows your app to lay out its content around a device's cutouts. You can set this attribute to one of the following values:
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
layoutInDisplayCutoutMode值说明:
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT:默认情况下,全屏窗口不会使用到刘海区域,非全屏窗口可正常使用刘海区域
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS:窗口声明使用刘海区域
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER:窗口声明不使用刘海区域
适配方案:
我们可以设置是否允许window扩展到刘海区:
WindowManager.LayoutParams lp =getWindow().getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
getWindow().setAttributes(lp);
例如一个有状态栏的页面, 我们可以这样适配:
DisplayCutout cutout = getDisplayCutout();
if(cutout != null){WindowManager.LayoutParams lp =getWindow().getAttributes(); lp.layoutInDisplayCutoutMode=WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER; getWindow().setAttributes(lp);
}
需要注意的是:谷歌提供的刘海屏适配方案,要求应用必须适配到P版本才可使用。
Android适配全面屏/刘海屏相关推荐
- Android适配全面屏
Android适配全面屏 测试了很多方法,下面这个是我找到的可以用的 首先sdk的版本要在28及以上 然后使用代码 在setContentView之前插入代码 @Overrideprotected v ...
- android 全面屏/刘海屏有效适配
黑底问题 手机厂商追求高用户体验,屏幕宽高比越做越高.17:9 19:10 18:9 18.5:9所谓全面屏. 原来一般主流手机1920*1080分辨率 16:9高宽比.如果没有单独去配置属性,会导致 ...
- 全面屏/刘海屏及虚拟键适配--总结版
什么是刘海屏? 随着iPhone X发布,刘海屏手机大行其道 ,Google Android P版本的发布,也引入了刘海屏的概念 即将发布的Android p也提供了对刘海屏的支持.像 华为P20 p ...
- Android适配全面屏(华为荣耀8,小米8,三星S8等)
昨天公司一运营小伙拿着新买的小米8,问我,为啥项目在我手机上下面有一大块是黑色的,原来,测试机一般用都是1920*1080的,或者是更小的,(16:9)的屏幕,而他的小米8是2160*1080(18: ...
- Android适配全面屏,三星S8的18.9,小米mix全面屏
一般手机的屏幕纵横比为16:9,如1080x1920.1440x2560等,其比值为1.777777--,全面屏手机出现之前,Android中默认的最大屏幕纵横比(maximum aspect rat ...
- android 适配全面屏手机
什么是全面屏 全面屏跟曲面屏,这是两个不同的概念. 一般手机的屏幕纵横比为16:9,如1080x1920.1440x2560等,其比值为1.777777--,全面屏手机出现之前,Android中默认的 ...
- android 齐刘海编程,[翻译]Android适配全面屏上的齐刘海
智能手机正在快速地向全面屏和更大的宽高比发展.在这些设备上,齐刘海是一种比较流行的实现全面屏体验的方式,它在设备的正面为重要的传感器提供了一小块区域.目前,已经有11家设备制造商发布了16种带有齐刘海 ...
- unity 安卓全面屏 刘海屏
修改AndroidManifest.xml 1.在<application></application>模块间 增加一行<meta-data android:name=& ...
- cocos2dx lua 3.14 适配 安卓 刘海屏 全面屏 异形屏
1,cnonfig.lua 目的是为了以高为极限. autoscale = "EXACT_FIT", 修改成 FIXED_HEIGHT ,2,接下来的场景.每个场景都要自己算位 ...
最新文章
- 【Design pattern】简单工厂过渡策略模式
- 江苏理工学院计算学院实验教学管理系统[.NET项目]
- 清明出游,在高速上堵了16个小时。
- 开发者如何谈判才能获得更高的薪水?
- ORA-01476: divisor is equal to zero解决方法
- python输入字符串str_python字符串String模块
- 旷视科技提出双向网络BiSeNet:实现实时语义分割
- How to manage concurrency in Django models
- linux音频设备节点,Linux音频驱动之三:PCM设备的创建
- Ceph性能调优和建议
- 计算机操作系统(第四版)课后习题答案
- Chrome 80 Cookie跨域 Samesite Lax 的错误
- Intent.parseUri()详解
- 初学者如何从零开始搭建一个阿里云数据库
- python里怎么使用snip_MacOS下好用的截图软件snip
- np.array与np.ndarray的区别
- Dubbo(一):Dubbo 3.0
- 物联网成为全球各国发展战略
- python怎么读取excel文件-Python读写Excel文件方法介绍
- 极速pdf编辑器的水印如何去掉_如何使用极速PDF编辑器修改PDF文档的页面大小?...
热门文章
- 全球及中国直播平台市场发展分析及投资战略规划报告2023-2030年
- 电脑计算机打不开显示远程过程,Win10打不开图片提示“远程过程调用失败”的解决方案...
- android中使用饼形图
- JS JQuery 操作: Json转 Excel 下载文件
- SAP中常见的Debug技巧(02)-跳过代码执行
- 激光雷达核心技术及行业格局梳理
- java登陆注册 mysql_Java+mysql用户注册登录功能
- 如何将onedrive for business扩容为硬盘空间
- 机器学习中常用的几何距离测量和统计距离测量方法总结
- FOC控制中Clark/iClark和Park/iPark变换及matpoltlib仿真