Android 刘海屏适配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 刘海屏适配相关的知识,希望对你有一定的参考价值。
参考技术A 对于刘海屏这里只讲 android 官方的,对于国内的各个手机厂商需要去其官网看厂商的适配刘海屏文档。在AS的模拟器上可以通过其设置来模拟刘海屏,有齐刘海,斜刘海和上下二个刘海(不知道怎么描述...),因为斜刘海(在小米MAX上见过)和上下二个刘海(没见过)不常见,这里就以齐刘海为例来进行适配。
首先要了解为什么要对刘海屏进行适配,在现在市场上绝大多数的app都在其内设置了状态栏沉浸式和全屏模式,让app可以侵入到状态栏,这时就会出现问题,比如按钮刚好在刘海的位置,那么这时按钮有效的点击范围就小了,就要对其进行适配,使按钮产生一个偏移。
产生原因:1.全屏(DecorVie有自己的背景) 2.沉浸式
解决: 1.判断有无刘海(各个厂商的也要判断)
2.无刘海不用对其设置,有刘海找出刘海的位置和大小
3.使其他view偏移一个刘海的大小
android之刘海屏适配
1 适配Android刘海屏小结
一、沉浸式与非沉浸式来回切换页面适配
二、沉浸式页面适配
(非沉浸式页面,系统自动适配)
不进行任何适配的情况下,带有刘海屏的手机都会有一套基本一致的处理逻辑。
一、沉浸式与非沉浸式来回切换页面适配
阅读正文界面
1、 存在问题: 正文页面在阅读的时候是沉浸式的(无菜单,状态栏), 由于沉浸式的时候, 系统的策略是刘海旁边为黑色(屏幕高度此时不算刘海旁边区域高度), 点击正文空白区域, 显示菜单的时候(显示状态栏,这时候为非沉浸式,屏幕高度算刘海旁边区域高度), 导致屏幕高度老是变化, 阅读器sdk会重新对章节,按屏幕高度重新排版。 所以看书界面会经常显示加载中。
2、蜗牛阅读正文适配: 使用假状态栏(一直不显示真状态栏,一直为沉浸式, 高度不会变化)
3、云阅读解决:
使用了文漫工具类, 刘海检测Util (DisplayCutoutUtil . hasDisplayCutout()是否为刘海屏 ,. displayCutoutRect()获取刘海屏的刘海矩形区域)。
4、云阅读书籍正文策略:
先检测是否是刘海屏幕
1、如果不是刘海屏幕——> 不改变
2、如果是刘海屏幕 ——>
方案一: 简单方案( 很简单, 暂时使用这个方式)
a、 让状态栏长期显示 (反正不显示也是黑色的), 不设置getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)(全屏模式), 菜单切换也不动FLAG_FULLSCREEN
b、a步骤完成,发现正文顶上去了
调整MainView顶部的paddingtop 为 原来的 paddingtop + 刘海的区域的高度
方案二: 针对不同的手机,对其进行适配 (比较麻烦,暂时放弃)
已公布实现方案的厂商(适配方式基本是通过反射调用特有方法/获取系统属性来判断),包括华为、小米、OPPO、VIVO,官方的适配文档地址如下:
未公布刘海屏适配文档的厂商,只能等待这些机型升级到Android P之后通过 Google 官方的方式进行适配
通过EMUI系统内提供的com.huawei.android.util.HwNotchSizeUtil来处理
小米:小米 MIUI Notch 屏 Android O 适配说明
通过MIUI系统属性ro.miui.notch来判断是否为刘海屏
OPPO:OPPO凹形屏适配说明
通过com.oppo.feature.screen.heteromorphism属性来判断是否为刘海屏
VIVO:VIVO全面屏应用适配指南
通过特有类android.util.FtFeature类来判断是否为刘海屏。
另外,也和蜗牛阅读一样,把底部的导航栏隐藏了
二、沉浸式页面适配
1、云阅读有声书播放界面是沉浸式的状态栏,
总体思路:刘海屏状态栏的高度其实和普通的都是一样, 所以只要给全面屏的页面设置一个paddingtop就可以实现,
写一个公共的头部布局在基类里用,给头布局设置一个ayout_marginTop。
1、 设置全屏,设置状态栏透明
2、获取到头布局 audio_player_title, 非刘海屏幕的时候离顶部,默认20dp
3:给头布局设置布局的paddingtop
非刘海屏幕——>不用处理
刘海屏幕——> 设置mtitleView 距离顶部为刘海区域的高度
以上是关于Android 刘海屏适配的主要内容,如果未能解决你的问题,请参考以下文章
Android 屏幕适配异形屏适配 ① ( 异形屏类型:刘海屏水滴屏挖孔屏 | 沉浸式布局刘海屏适配 | 华为手机异形屏适配注意点 )
Android 屏幕适配异形屏适配 ① ( 异形屏类型:刘海屏水滴屏挖孔屏 | 沉浸式布局刘海屏适配 | 华为手机异形屏适配注意点 )
Android 屏幕适配异形屏适配 ② ( 需要异形屏适配情况 | 需要异形屏适配的 Android 系统版本 | 刘海屏状态判定 | 异形屏适配调试 - 华为云调试 )
Android 屏幕适配异形屏适配 ② ( 需要异形屏适配情况 | 需要异形屏适配的 Android 系统版本 | 刘海屏状态判定 | 异形屏适配调试 - 华为云调试 )