android 手游全面屏适配方案

由于原始应用是基于android4.4版本搞的,直接用android P的sdk来搞开发不现实,android P的模拟器可以实现官方刘海了模拟了,没有的可以试试。

适配方案:
计算状态栏高度,如果高度为0那么就是正常比例的手机,如果高度不为0,那么就要加上这个高度。

//获取状态栏高度
 public static int getStatusBarHeight(Context context) 
 {
       int result = 0;
       int resourceId = context.getResources().getIdentifier("status_bar_height","dimen", "android");
       if (resourceId > 0) 
       {
           result = context.getResources().getDimensionPixelSize(resourceId);
       }
       return result;
  }

这里有个值,2.07,也就是华为 P20 屏幕比例是2.077777777小一点的范围(感觉这个还是会有点问题),如果状态栏的高度加上显示的宽度与高度比小鱼这个值,那么就认为不是全面屏,设置这个状态栏高度为0,这个时候,非全面屏的手机就可以正常显示,如果是全面屏,那么这个比就会大于2.07,那么宽度就要加上这个状态栏高度。

int barHeight = MainActivity.getStatusBarHeight(activity);
if( (float)(DisplayWidth + barHeight) / DisplayHeight < 2.07 )
{
    barHeight = 0; // 非全面屏
}

mRender = new Renderer(Context, DisplayWidth + barHeight, DisplayHeight);

第二次修改
现在游戏内的适配是没问题了,不过华为那边还是给退回来了,是说没有进行全面屏适配。
那么问题来了,他们说的全面屏适配是什么?
后来沟通了一下,指的是如果进行了全面屏适配,在打开游戏的时候不会出现一个“全屏适配”的按钮,点击这个按钮就会自动重启应用并拉伸,也是找了好多方案,最后试验才试出来问题所在

<meta-data android:name="android.max_aspect" android:value="2.1" />

上面这个配置是为了适配三星s8而做的调整,然后今天在看华为的适配文档的时候,也发现了这个字段,不过值他们推荐改为2.4

那么这个值表示什么含义呢?参考如下链接
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0405/7783.html

实际上是app支持的最大长宽比的限制,改大一点就完成了适配了,应用就默认可以支持全面屏了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值