小米8刘海适配

自从IPhone X出现刘海的设计,今年各大android手机厂商也纷纷效仿,也为自家的手机设计刘海;这不小米8就是有刘海设计的,这可苦了手机应用开发的码农了,因为各大android手机厂商,他们刘海api都不一样,需要码农每个品牌的手机都做下适配。下面简单说下小米8的适配。

1、APP开启全屏显示

首先看下官方的文档:https://dev.mi.com/console/doc/detail?pId=1160,很可惜当我按照它说的去做发现这个然并卵,我APP没有全屏显示,刘海那边全是黑的,后来我在另一篇博客中找到另外一种设置方式如下:

在APP的AndroiManifest.xml添加上面meta-data设置就行,这样APP就能全屏显示了。

 2、APP判断是否有刘海并获取刘海宽度

2.1判断是否有刘海

小米系统增加了一个属性 ro.miui.notch,值为1时则是有刘海反之没有。其值获取的方式也很简单

SystemProperties.getInt("ro.miui.notch", 0) == 1;

注意SystemProperties这个类在android.os下,但是这个类是隐藏的,上层的程序是无法直接调用的,那么我们可以用反射的机制来使用这个类;代码如下

int defaultVal = 0;
try
{
    Class<?> cls = Class.forName("android.os.SystemProperties");
    Method getMethod = cls.getMethod("getInt", String.class, int.class);
    defaultVal = (Integer)getMethod.invoke(cls, "ro.miui.notch", 0);
}
catch (Exception e)
{
    e.printStackTrace();
}
finally
{
    return defaultVal;
}

如此我们就可以判断当前的小米设备是否有刘海了。

2.2获取刘海宽度

判断了是否有刘海接下来就是要获取刘海的宽度,以便来调整UI的显示,其获得的方式如下:

int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
    result = context.getResources().getDimensionPixelSize(resourceId);
}

OK,这样基础开启全面屏显示,判断是否是刘海屏以及获取刘海的宽度的方式都介绍完了,接下来就是各位自己去调整自己APP的UI了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值