如何获得带有缺口的Android手机的正确屏幕尺寸

时间:2019-05-31 02:04:31

标签: java android screen dimensions

我正在使用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个像素,由于高度不正确而发生了移位

2 个答案:

答案 0 :(得分:0)

直到现在,无法获得带有缺口的屏幕的真实尺寸

答案 1 :(得分:0)

您尝试使用getRealMetrics代替getMetrics吗?