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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章