最近把公司游戏做了下全面屏的适配,在这里简单写下方案,供大家参考下

我们游戏以1280*720分辨率为设计原型,即16:9
需要做适配的比列为
2:1(现在的全面屏手机的比例大概在这个范围左右)
4:3(主要考虑好些人在拿着ipad玩游戏)
从上图可以看出
1. 从16:9到2:1,屏幕宽度变得更长了,所以宽度有富余,适配高度,即Canvas的FitHeight。
2. 从16:9到4:3,屏幕宽度减少,所以需要适配宽度FitWidth,保证界面UI可以排的下。
当我们选择一种适配方式时,屏幕的width或height会等比列的缩放,所以会留出许多空白,这时候就需要根据界面元素,使用widget组件进行自适应调整。
刘海屏适配方案:
1.安卓,安卓系统可以选择不使用刘海区域(一般系统会自动填平刘海)。
<meta-data android:name="android.max_aspect" android:value="2.4" />
安卓手机需要在配置文件中添加以上参数,才能使游戏全屏显示,value值自行填写,意思是app可支持的最大屏幕比例。
2.苹果,强制要求使用刘海区域,所以需要在屏幕左右两端留出一定的宽度(刘海的宽度)。
3.苹果x下方有虚拟home键,对于需要从下方滑动的UI会造成冲突,根据使用场景自行调整。
4.因为矩形圆角屏幕,需要考虑4个角是否会遮挡UI元素,留出相应距离。
判断iPhone刘海高度的简单方法
let v2 = cc.winSize
let rect = cc.director.getSafeAreaRect() //忘了啥时候支持的api,1.9.0是支持的
刘海高度=Math.ceil(v2.width - rect.width)/2
以上只是粗略的写了下实现方案,其实适配还是蛮简单的,主要工作还是UI的搭建,多多使用widget组件,实现自适应UI。
这个是iphonex 的,小米八也是这样的,我打算将蓝色区域的移到刘海屏下面,这样就出现了,我该怎么知道该机型是否有刘海屏了?