我正在使用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个像素,由于高度不正确而发生了移位
答案 0 :(得分:0)
直到现在,无法获得带有缺口的屏幕的真实尺寸
答案 1 :(得分:0)
您尝试使用getRealMetrics代替getMetrics吗?