android单个页面切换_Android 刘海屏适配方案

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

1

什么是刘海屏?

屏幕的正上方居中位置(下图黑色区域)会被挖掉一个孔,屏幕被挖掉的区域无法正常显示内容,这种类型的屏幕就是刘海屏,也有其他叫法:挖孔屏、凹凸屏等等,这里统一按刘海屏命名。

76a6e612b3199766b4e9c80906c38ea8.png

目前国内厂商已经推出的刘海屏Android手机有华为P20 pro, vivo X21,OPPO R15。

如果没有适配刘海屏会有什么后果?

后果一:导航栏中title被遮挡

4c81d81900061d825b31dc978626dab1.png

未适配刘海屏1

后果二:显示内容下移,头部出现黑条,底部出现遮挡

d498536dc13cfbea89cf3f6a6d8bf6cd.png

未适配刘海屏2

2

如何适配刘海屏?

由于Android p正式版今日刚发布, 当前市面上的Android 刘海屏手机还不能用Android 官方提供的方案来解决,那怎么办呢?还好几个厂商自己给出了适配方案。我们先讲理论后上代码,如果您只想要代码就直接往下翻:

华为P20 pro

华为刘海屏适配官方文档

https://devcenter-test.huawei.com/consumer/cn/devservice/doc/50114

华为给出的文档最为详细(业界良心),P20 pro预装系统对未做刘海屏适配处理的app有一定处理,处理逻辑如下

d76fae58430a886fa1cb24b25615d4c5.png

预处理流程图

可见,会被华为系统做偏移处理的有2种情况:

1.未设置meta-data值,页面横屏状态

2.未设置meta-data值,页面竖屏状态,不显示状态栏

这2种情况都会出现后果二。如果你的app中页面没有这两种情况,例如都是竖屏且显示状态栏,你就可以淡定地不做处理。

现在我们知道原因了就可以对症下药了,这里给出我推荐的解决方案(官方给出的解决方案不止一种,可以根据自己的需要采用) 分为4步:

1.配置meta-data

①对Application生效,意味着该应用的所有页面,系统都不会做竖屏场景的特殊下移或者是横屏场景的右移特殊处理:

22ea1fbef2e3fd9f89e402d5327f78e9.png

配置在application下

② 对Activity生效,意味着可以针对单个页面进行刘海屏适配,设置了该属性的Activity系统将不会做特殊处理:

2a70652ed75d49759b5a1da4c8fb706a.png

配置在Activity下

2.检测是否存在刘海屏

public static boolean hasNotchInScreen(Context context) { boolean ret = false; try { ClassLoader cl = context.getClassLoader(); Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil"); Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen"); ret = (boolean) get.invoke(HwNotchSizeUtil); } catch (ClassNotFoundException e) { Log.e("test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值