【问题标题】:How to get correct screen dimensions for Android Phone with notch如何获得带有缺口的 Android 手机的正确屏幕尺寸
【发布时间】:2019-10-16 16:10:08
【问题描述】:

我正在使用Java为Android制作游戏,我需要将游戏屏幕尺寸映射到设备屏幕尺寸,我曾经使用以下代码获取设备屏幕尺寸

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width=dm.widthPixels;
int height=dm.heightPixels;

我在使用带有刘海的新设备时遇到问题,上面的代码给了我与实际设备不同的屏幕高度,例如,实际设备高度为 2340 像素但代码返回 2130 像素,我使用以下代码获取缺口高度

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    DisplayCutout displayCutout = getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();
    if (displayCutout.getBoundingRects().size() > 0) {
        Rect notchRect = displayCutout.getBoundingRects().get(0);
    }
}

原来是80,现在2130 + 80就是2210,我把游戏画面映射到设备画面还是少了130个像素,因为高度不正确会发生偏移

【问题讨论】:

  • 您是在装有 Android P 的设备上测试它吗?
  • @sanjeev 是的,我正在使用 Android P 的设备上进行测试,请注意我知道如何检测设备是否有缺口,并且我知道如何获得缺口尺寸,我的问题是如何获取以像素为单位的屏幕高度,因为普通方法返回错误的高度
  • 正确检查答案。当您使用 Android 方法确定时,他会检查状态栏高度是否超过 24dp。
  • 然后呢?我需要以像素为单位获取屏幕总高度

标签: java android screen dimensions


【解决方案1】:

到目前为止,还没有办法通过刘海获得屏幕的真实尺寸

【讨论】:

    【解决方案2】:

    您是否尝试过 getRealMetrics 而不是 getMetrics?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多