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

安卓的刘海屏如何适配

发布时间: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什么的太逼死强迫症了。

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

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

阅读全文

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

热点内容
exo在哪里下载app 浏览:780
it程序员在国企的感受 浏览:495
快手app哪里看物流 浏览:209
梁的加密区在梁的什么位置 浏览:636
萝卜源码编译 浏览:980
安卓手机连不上苹果热点是为什么 浏览:437
微信加密密保问题忘记怎么办 浏览:920
在哪里能制作手机app 浏览:165
python搭建web网站 浏览:685
空乘程序员 浏览:349
玩加密币犯法吗 浏览:245
html加载pdf 浏览:1002
git源码如何本地编译命令 浏览:868
单片机研究报告 浏览:265
天正建筑命令栏 浏览:598
加密货币应税事件 浏览:459
宋pro的app哪里下载 浏览:207
单片机原理与接口技术第三版课后答案 浏览:890
程序员小明教学 浏览:613
linuxbin解压缩 浏览:382