目前国内厂商已经推出的刘海屏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适配全面屏/刘海屏相关推荐

  1. Android适配全面屏

    Android适配全面屏 测试了很多方法,下面这个是我找到的可以用的 首先sdk的版本要在28及以上 然后使用代码 在setContentView之前插入代码 @Overrideprotected v ...

  2. android 全面屏/刘海屏有效适配

    黑底问题 手机厂商追求高用户体验,屏幕宽高比越做越高.17:9 19:10 18:9 18.5:9所谓全面屏. 原来一般主流手机1920*1080分辨率 16:9高宽比.如果没有单独去配置属性,会导致 ...

  3. 全面屏/刘海屏及虚拟键适配--总结版

    什么是刘海屏? 随着iPhone X发布,刘海屏手机大行其道 ,Google Android P版本的发布,也引入了刘海屏的概念 即将发布的Android p也提供了对刘海屏的支持.像 华为P20 p ...

  4. Android适配全面屏(华为荣耀8,小米8,三星S8等)

    昨天公司一运营小伙拿着新买的小米8,问我,为啥项目在我手机上下面有一大块是黑色的,原来,测试机一般用都是1920*1080的,或者是更小的,(16:9)的屏幕,而他的小米8是2160*1080(18: ...

  5. Android适配全面屏,三星S8的18.9,小米mix全面屏

    一般手机的屏幕纵横比为16:9,如1080x1920.1440x2560等,其比值为1.777777--,全面屏手机出现之前,Android中默认的最大屏幕纵横比(maximum aspect rat ...

  6. android 适配全面屏手机

    什么是全面屏 全面屏跟曲面屏,这是两个不同的概念. 一般手机的屏幕纵横比为16:9,如1080x1920.1440x2560等,其比值为1.777777--,全面屏手机出现之前,Android中默认的 ...

  7. android 齐刘海编程,[翻译]Android适配全面屏上的齐刘海

    智能手机正在快速地向全面屏和更大的宽高比发展.在这些设备上,齐刘海是一种比较流行的实现全面屏体验的方式,它在设备的正面为重要的传感器提供了一小块区域.目前,已经有11家设备制造商发布了16种带有齐刘海 ...

  8. unity 安卓全面屏 刘海屏

    修改AndroidManifest.xml 1.在<application></application>模块间 增加一行<meta-data android:name=& ...

  9. cocos2dx lua 3.14 适配 安卓 刘海屏 全面屏 异形屏

    1,cnonfig.lua   目的是为了以高为极限. autoscale = "EXACT_FIT", 修改成 FIXED_HEIGHT ,2,接下来的场景.每个场景都要自己算位 ...

最新文章

  1. 【Design pattern】简单工厂过渡策略模式
  2. 江苏理工学院计算学院实验教学管理系统[.NET项目]
  3. 清明出游,在高速上堵了16个小时。
  4. 开发者如何谈判才能获得更高的薪水?
  5. ORA-01476: divisor is equal to zero解决方法
  6. python输入字符串str_python字符串String模块
  7. 旷视科技提出双向网络BiSeNet:实现实时语义分割
  8. How to manage concurrency in Django models
  9. linux音频设备节点,Linux音频驱动之三:PCM设备的创建
  10. Ceph性能调优和建议
  11. 计算机操作系统(第四版)课后习题答案
  12. Chrome 80 Cookie跨域 Samesite Lax 的错误
  13. Intent.parseUri()详解
  14. 初学者如何从零开始搭建一个阿里云数据库
  15. python里怎么使用snip_MacOS下好用的截图软件snip
  16. np.array与np.ndarray的区别
  17. Dubbo(一):Dubbo 3.0
  18. 物联网成为全球各国发展战略
  19. python怎么读取excel文件-Python读写Excel文件方法介绍
  20. 极速pdf编辑器的水印如何去掉_如何使用极速PDF编辑器修改PDF文档的页面大小?...

热门文章

  1. 全球及中国直播平台市场发展分析及投资战略规划报告2023-2030年
  2. 电脑计算机打不开显示远程过程,Win10打不开图片提示“远程过程调用失败”的解决方案...
  3. android中使用饼形图
  4. JS JQuery 操作: Json转 Excel 下载文件
  5. SAP中常见的Debug技巧(02)-跳过代码执行
  6. 激光雷达核心技术及行业格局梳理
  7. java登陆注册 mysql_Java+mysql用户注册登录功能
  8. 如何将onedrive for business扩容为硬盘空间
  9. 机器学习中常用的几何距离测量和统计距离测量方法总结
  10. FOC控制中Clark/iClark和Park/iPark变换及matpoltlib仿真