unity5.x适配Android P刘海屏方案


最近项目有需要适配Android P的刘海屏,尝试在androidManifest.xml中进行了各种配置发现系统仍然自动两边留黑,刘海附近默认不绘制,最后方案是通过修改启动activity进行解决:

修改启动Activity

以下是MainActivity.java的源码:

import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends UnityPlayerActivity{
    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
        {
            try
            {
                Window window = getWindow();

                //设置页面全屏显示
                WindowManager.LayoutParams lp = window.getAttributes();
                lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
                
                //设置页面延伸到刘海区显示
                window.setAttributes(lp);
            }
            catch (Exception e)
            {
                Log.e("activity", "not support layoutInDisplayCutoutMode!");
            }
        }
        else
        {
            Log.w("activity", "not support layoutInDisplayCutoutMode!");
        }
    }
}

通过重载UnityPlayerActivity,在onCreate中对刘海屏进行延伸显示设置.

注意!!
layoutInDisplayCutoutMode 接口只有Android P才有,所以需要对SDK版本号进行判断,否则Android P以下的系统运行会崩溃.

因此必须加入如下判断代码:

 if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)

生成jar包替代启动Activity

关于如何通过AndroidStudio生成jar包来进行启动activity替换,请见如下链接:
https://www.jianshu.com/p/8256c0da444a?tdsourcetag=s_pctim_aiomsg
在这里插入图片描述

unity2018的方案

unity官方在新版本中做了很方便的处理,只需要在Building Setting中把

Render outside safe area

勾上就可以了
在这里插入图片描述

  • 操作系统:win10
  • uniy版本:5.5.6f1
  • AndroidStudio版本:3.3.1
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值