最近我们的应用在一部oppo reno3 5g(Android 10)手机上适配存在问题。

先放一些官方文档吧:)

  1. https://developer.android.com/reference/android/view/WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
  2. https://developer.android.com/guide/topics/display-cutout?hl=zh-cn
  3. https://open.oppomobile.com/wiki/doc#id=10667

我使用的是LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER的模式。

我司手机上三方应用的凹形显示方案是:自动匹配。那么会存在三种情况:
4.1应用未配置凹形显示属性layoutInDisplayCutoutMode
对于非全屏显示应用(有状态栏),凹形区域显示的是状态栏,系统会自行处理;
对于全屏显示应用,凹形区域显示的是黑条(应用在凹形区域不显示),所以是不存在凹口区域遮挡问题的。
4.2应用配置了凹形总是不显示属性:never
那么不管什么情况下,凹形区域都是显示为黑条,也是不存在凹口区域遮挡问题的。
4.3应用配置了凹形总是显示属性:always
对于非全屏显示应用(有状态栏),凹形区域显示的是状态栏,系统会自行处理;
对于全屏显示应用,应用是会显示到手机的凹口区域,所以是有可能存在凹口遮挡问题的。具体例子请看下一部分《三方应用典型遮挡问题》。
对于这类问题(三方应用主动设置了凹形显示属性,但是在我司凹口屏屏手机上存在遮挡问题的),我们希望三方应用能适配下我司凹口屏机器,关键功能键和关键信息不要在凹口区域显示,避免遮挡问题。
如果三方应用最后未适配,我司手机会统一加上规避方案,强制去掉三方应用配置的凹形区域显示属性,强制三方应用不在凹形区域显示(凹形区域显示黑条),解决遮挡问题。

但是实际情况是,oppo系统在应用里面,搞了一个“自定义显示顶部区域”的选项,选项中有三个选择。

  • 自动匹配
  • 显示顶部区域
  • 隐藏顶部区域(全屏显示界面)

使用了LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER的模式的应用,只有在选中“隐藏顶部区域(全屏显示界面)”才会按照文档表现,其他的都是被系统强改成铺满全屏。

所以这里的问题可能要描述为,解决OPPO系统在android10魔改刘海屏的适配…

解决方法还是切实做一下刘海屏的适配…

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P&& mRootView.getRootWindowInsets() != null&& mRootView.getRootWindowInsets().getDisplayCutout() != null) {int paddingLeft = Math.max(mRootView.getRootWindowInsets().getDisplayCutout().getSafeInsetLeft(),mRootView.getRootWindowInsets().getDisplayCutout().getSafeInsetRight());if (paddingLeft > 0) {if (leftLayout.getLayoutParams() instanceof LinearLayout.LayoutParams) {LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) leftLayout.getLayoutParams();layoutParams.width = paddingLeft + layoutParams.width;leftLayout.setLayoutParams(layoutParams);contentView.setPadding(paddingLeft, 0, 0, 0);}}
}

解决OPPO系统在Android10魔改刘海屏的额外适配相关推荐

  1. android屏幕适配的五种方式_讲一讲Android 9.0系统的新特性,对刘海屏设备进行适配...

    黑客技术点击右侧关注,了解黑客的世界! Java开发进阶点击右侧关注,掌握进阶之路! Python开发点击右侧关注,探讨技术话题!作者丨郭霖来源丨郭霖(guolin_blog) 其实Android 9 ...

  2. 如何将旧笔记本电脑显示屏魔改扩展屏-2021-05-26

    如何将旧笔记本电脑显示屏魔改扩展屏 如何将旧笔记本电脑显示屏魔改扩展屏 魔改理由 所需工具 拆除显示屏 驱动板连接 如何将旧笔记本电脑显示屏魔改扩展屏 魔改理由 旧笔记本电脑扔在墙角积尘很是浪费资源, ...

  3. 计算机断电后黑屏怎么办,如何解决win7系统电脑开机后断电黑屏的故障

    很多用户都曾碰到过断电的情况,这种现象是不再我们控制范围内的.对此,很多用户表示电脑在正常状态下断电重启后出现黑屏,这是怎么回事呢?电脑没有任何反应,电源指示灯熄灭,重启在开机故障依旧,该如何解决这个 ...

  4. android刘海屏之终极适配

    前言:作为安卓开发,也得承认苹果设计一直在引领潮流,所以自从 iPhone X 发布之后,"刘海屏" 就一直被热议,作为我自己必须先吐槽一下,真没觉得刘海屏好看.但是作为苦逼的开发 ...

  5. Android 系统(70)---Android刘海屏适配方案

    Android刘海屏适配方案 什么是刘海屏 随着iPhone X发布,国内一些厂商也推出了刘海屏手机,即将发布的Android p也提供了对刘海屏的支持.so,我们的app也要提前做好适配. 屏幕的正 ...

  6. 计算机显示适配器禁用了电脑黑屏,Win10电脑禁用集成显卡后黑屏如何解决_Win10系统禁用集成显卡后黑屏解决方案...

    许多用户都喜欢使用双显卡,有时候为了获得更好的性能要使用独立显卡,但是每次要切换可能有点麻烦,所以有win10系统用户想要禁用集成显卡,可是不少用户在禁用集成显卡后电脑出现黑屏了,这该怎么办呢,本教程 ...

  7. pool win10提示bad_如何解决Win10系统出现bad pool header蓝屏现象?

    Windows10系统出现bad pool header蓝屏怎么办?现在使用Windows10系统的人越来越多了,但是有朋友在Win10系统下玩游戏时,偶尔会出现蓝屏bad pool header报错 ...

  8. Android 刘海屏全面屏适配

    参考链接: https://blog.csdn.net/u011494285/article/details/86681405 API >= 24 (Android 7.0) 以上会自动适配全面 ...

  9. 两种解决win7系统的电脑出现开机黑屏的方法

    电脑使用就了都会出现一些小毛病,不管是使用什么系统遇到一些小故障问题是在所难免的,但是不管是什么问题都是有很好的方法可以解决.最近有些用户在使用win7系统的过程遇到了电脑黑屏的问题,有时候电脑开机就 ...

最新文章

  1. ExtJs grid合并单元格
  2. when to book didi?
  3. 09 numpy 聚合函数 - 极值,方差,标准差
  4. js操作元素节点对象innerHTML
  5. MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
  6. android adb wifi
  7. TED演讲——人生的12条法则
  8. 【自己给自己题目做】之一:椭圆可点击区域
  9. 吴恩达 深度学习 编程作业(2-1.1) Initialization
  10. 傅里叶变换 c语言程序,(快速傅里叶变换)C语言程序汇编
  11. 基于Java实现的快速排序
  12. unity 代码边缘发光_unity游戏物体边缘发光高亮突出显示系统插件Highlighting System 5.0...
  13. 肝一份java性能调优手册
  14. VHDL_EDA课设_八音电子琴
  15. 51单片机最小系统电路图
  16. 2018主流台式计算机跑分,pu天梯图2018最新版2018电脑cpu处理器性能排行榜
  17. 十年饮冰,难凉热血--毕业四年多的经历,致敬每一位IT男
  18. 爱的杂篇--掉掉眼泪
  19. java:编写一个求平方的窗体
  20. 完整登录、注册页面(无功能)

热门文章

  1. 软考高项论文评分标准参考
  2. 【Linux】ens33文件配置
  3. java会员卡的绑定和解绑_前后端分离项目 — SpringSocial 绑定与解绑社交账号如微信、QQ...
  4. 计算机体系结构和操作系统基础
  5. 什么是持久层? 什么是JDBC ?什么又是 Mybatis?什么是SSM?
  6. 计算字符串中字符个数
  7. Unity C# using用法
  8. vue中购物车的案例
  9. C# 读取PDF文本和图片
  10. 基于EasyX来使用中点算法画线