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