• 解决Unity-2020 安卓异形屏黑边


    背景

    Unity 2020.3.17 版本开发的游戏,打apk包,发现两个问题

    1. 如图下午所示,实体白色导航栏,阻挡了整个安卓UI界面,难看还影响美观。

    安卓导航栏截图.png

    1. 安卓系统 12-13 版本手机,异形屏。一侧安全区黑边遮挡,占空间还不美观。

    安卓异形屏黑边截图.png

    尝试方案

    仅做记录,不感兴趣的,可以直接跳解决方案。

    增加如下代码,在cocos2d 系列游戏, 黑边问题(隐藏导航栏)基本能完美解决。但是在unity游戏,尝试修改很多安卓层代码和清单文件配置,黑边问题并不奏效。最终翻阅unity开发文档,尝试了一下。问题得以解决。

    • 处理异形屏黑边问题
    
          if (Build.VERSION.SDK_INT >= 28) {
               getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
                WindowManager.LayoutParams lp = getWindow().getAttributes();
                lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
                getWindow().setAttributes(lp);
            }
    
    • 隐藏和现实导航栏或者状态栏
    // 隐藏系统UI(状态栏和导航栏)  
    public void hideSystemUI() {  
        // 启用沉浸模式  
        // 注意:这些标志在Android不同版本中的效果可能有所不同  
        // FLAG_FULLSCREEN 用于隐藏状态栏  
        // FLAG_HIDE_NAVIGATION 用于隐藏导航栏  
        // FLAG_IMMERSIVE_STICKY 或 FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 用于改进显示效果  
        View decorView = getWindow().getDecorView();  
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN  
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;  
        decorView.setSystemUiVisibility(uiOptions);  
    }  
      
    // 显示系统UI(用于用户交互时恢复系统UI)  
    public void showSystemUI() {  
        View decorView = getWindow().getDecorView();  
        int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;  
        decorView.setSystemUiVisibility(uiOptions);  
    }  
    
    

    解决方案

    • Hide Navigation Bar : 启用该选项,用于处理安卓生命周期显示(隐藏)导航栏

    • Render outside safe area : 启用该选项可允许使用所有可用的屏幕空间(包括显示屏缺口(凹口)区域)进行渲染

    unity解决方案.png

  • 相关阅读:
    LINUX如何 部署ansible
    SpringBoot配置https
    C++语言代码示例
    前端 JS 经典:LRU 缓存算法
    400电话-400电话办理-400号码办理
    octave 与 matlab
    Linux从 全栈开发 centOS 7 到 运维
    Swift中的strong, weak, unowned
    软考【网络管理员】100道高频考题(含知识点解析),轻松45+
    【蓝桥杯】C++研究生组 每个整装待发的重新开始,都为时不晚!
  • 原文地址:https://blog.csdn.net/baidu_31156101/article/details/139685666