最近我们的应用在一部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);        }    }}

更多相关文章

  1. android 解决输入法键盘遮盖布局问题
  2. 8. android Tab 选项卡控件
  3. Android处理EditText键盘自动隐藏
  4. Android桌面组件开发之桌面快捷方式(一)
  5. Android(安卓).9.png图片的制作与使用
  6. Android(安卓)View Attributes
  7. Android图形图像处理:马赛克(Mosaic)效果
  8. Android(安卓)Studio 使用Lambda表达式
  9. Android自适应拉伸图片

随机推荐

  1. Android Studio:公司内网搭建Android stu
  2. Android(安卓)Launcher 动态icon【时钟】
  3. Android实用视图动画及工具系列之九:漂亮
  4. android.uid.system Android中如何修改系
  5. Android中的各种保活2-Android端外推送到
  6. Android通讯录实现联系人模糊查找
  7. ListView 滚动条
  8. 关于android receiver
  9. Android(安卓)permission第三方rxpermiss
  10. Android(安卓)Preferencescreen用法