首页 > 解决方案 > 如何获得带有缺口的 Android 手机的正确屏幕尺寸

问题描述

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

标签: javaandroidscreendimensions

解决方案


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


推荐阅读