Я делаю игру для Android с использованием Java, мне нужно сопоставить размеры экрана игры с размерами экрана устройства, я использовал следующий код для получения размеров экрана устройства
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 пикселей, из-за неправильной высоты происходит смещение