导航:首页 > 操作系统 > 安卓的刘海屏如何适配

安卓的刘海屏如何适配

发布时间:2024-10-24 13:46:17

‘壹’ android 屏幕适配之bug 刘海屏、水滴屏

上述两种屏幕都可以统称为刘海屏,不过对于右侧较小的刘海,业界一般称为水滴屏或美人尖。

目前国内流行的手机厂商主要有:vivo、oppo、华为、小米。各厂商对刘海屏的适配都大不相同,各自有各自对刘海屏的适配API,具体的适配方法可以阅读相应的官网:
VIVO: https://dev.vivo.com.cn/documentCenter/doc/103

OPPO: https://open.oppomobile.com/wiki/doc#id=10159

小米: https://dev.mi.com/console/doc/detail?pId=1293

华为: https://developer.huawei.com/consumer/cn/devservice/doc/50114 ?

具体的适配方法这里不作一一介绍,按照以上四大厂商官网所给出的适配方法,这里给出四大厂商判断/获取刘海屏的工具类:

}

根据四大厂商官网所提供的适配方案,其中需要在AndroidManifest中添加标签(具体说明请浏览官网):

在对于Android P的适配中Google给出了统一的方案(基于Android API 28):

<meta-data android:name="android.vendor.full_screen" android:value="true"/>

在Build.VERSION.SDK_INT >= 28中提供了以下接口:

DisplayCutout类接口:主要用于获取凹口位置和安全区域的位置等。

方法

接口 说明: 返回Rects的列表,每个Rects都是显示屏上非功能区域的边界矩形。

返回安全区域距离屏幕左边的距离,单位是px。

返回安全区域距离屏幕右边的距离,单位是px。

返回安全区域距离屏幕顶部的距离,单位是px。

返回安全区域距离屏幕底部的距离,单位是px。

模式:

模式说明:只有当DisplayCutout完全包含在系统栏中时,才允许窗口延伸到DisplayCutout区域。 否则,窗口布局不与DisplayCutout区域重叠

该窗口决不允许与DisplayCutout区域重叠。

‘贰’ 为何没给刘海屏做适配MIUI:不怪我

全面屏时代,很多国产品牌发布了多款刘海屏机型,对于这类机型,官方基本都会帮忙做屏幕适配。不过,对于一些小米旧款机型来说,即使升级到了Android9.0版本,部分应用也依然没有对刘海屏做适配,使用起来相当难受。

对此,MIUI官方进行了解释。小米MIUI高级工程师李伟星发文称:“在Android O时代,原生安卓还不支持刘海,各大厂商分别设计了一套自己的接口标准,推动应用开发者适配支持,厂家和开发者都费老大劲了。

到了Android P,Google推出统一接口,我们想当然认为武林盟主出手,大家一定会马首是瞻。所以我们在做老机型升级P时,系统就切换回标准接口方案,没想到嗝P了,很多应用一直都没适配好谷歌的接口方案。”

同时,李伟星还表示,目前MIUI正在努力优化,让系统同时兼容小米和谷歌两套接口方案,开发版近期会升级支持主流 游戏 ,稳定版争取三月底推送。

‘叁’ Unity屏幕适配之——刘海屏

iphoneX由于带有各种传感器,不得不搞了个刘海屏,各个国产手机也跟了一波风,手机传感器塞的很爽,但苦逼的开发者又增加了新工作——为app增加刘海屏适配。

在游戏里面,很多UI都是紧贴屏幕边缘的,这样就会被刘海屏的刘海盖住,无法点击。网上找了几种适配方案,有的是直接缩短游戏宽度,刘海的部分是一条整齐的黑边。我觉得这样的方案不好,毕竟它缩短了游戏显示宽度;另一种方案是只将UI的部分向刘海内侧推动一截,其余不变,场景还是原来的宽度。我觉得这个方案比较好一些,相对不影响游戏的视角观感。

实现方式:
1.首先要检测是否是刘海屏。这里可以使用平台和分辨率来判断,也可以读取SystemInfo.deviceModel获取设备型号,或者用这个UnityEngine.iOS.Device.generation也可以,主要是要实现这么个接口就好。

2.如果是刘海屏,对需要设置适配的UI(只有那些交互元素贴边的UI需要适配,其余不需要),设置其最底层Panel的offsetMin或者offsetMax (有的博客是直接在刘海屏上同时设置offsetMin和offsetMax,也就是四边都往里缩进,我觉得不太好,毕竟只有一边有刘海,其他的边不需要缩进,否则会缩小游戏场景部分的显示范围) 。这里设置的宽度值我参考他人的博客使用44f,效果还是可以的。

3.如果你的游戏允许左右转屏,那么还要监听屏幕转动事件,再根据屏幕方向去设置offsetMin或offsetMax。

最后,现在貌似出了一种技术,可以把传感器直接藏在透明的屏幕下方;也有厂商把传感器放在手机夹层里,需要使用的时候再从屏幕上方弹出来。总之希望刘海屏和各种类似的Notch屏赶快淘汰,一整面完好无损的大屏才是审美,Notch什么的太逼死强迫症了。

‘肆’ 有刘海屏的安卓手机玩吃鸡是不是自动适配

当然不是,需要手机本身的软件适配

阅读全文

与安卓的刘海屏如何适配相关的资料

热点内容
linux下编辑命令 浏览:334
4台服务器怎么连接一个显示器 浏览:502
重庆前端程序员私活app排行 浏览:560
樱花跑酷地图id加密码 浏览:637
安卓怎么动不动就更新软件 浏览:877
pdf的意思 浏览:721
怎么检查fpga编译错误 浏览:204
python编程usb 浏览:282
终端编译器python 浏览:596
日线涨幅python 浏览:806
安卓手机怎么调出应用 浏览:954
k大的教程文件解压密码 浏览:126
文件夹制作手机支架视频 浏览:592
保密文件夹华为 浏览:251
java日历算法 浏览:304
鹿医app群聊聊天记录怎么删除 浏览:89
poop手机设置服务器P地址 浏览:676
安卓手机怎么传到苹果电脑上 浏览:731
建筑智能化系统pdf 浏览:373
截断的二进制指数退避算法 浏览:725