0

无论应用程序窗口的尺寸或偏移量/插图如何,我都需要获取相对于屏幕的点的确切坐标。我正在开发的手机具有 1080x2280 分辨率和 android 9。我尝试使用 查找屏幕尺寸getDefaultDisply,但屏幕上的缺口高度被减去:

// Testing with notch hidden; the screen is pushed down below it
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); // 1080x2062 (-notification bar height!)
getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); // 1080x2192 (actual window height when notch is hidden)

隐藏时如何获得真正的分辨率和缺口高度?

4

2 回答 2

0

我发现的解决方案是使用getRealMetrics来获取屏幕的高度。

getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics)

这也通过包括凹口的高度来计算屏幕的高度。适用于Notch Mode ON/OFF 也适用于没有 Notch 的设备

于 2021-03-01T09:33:33.467 回答
-1

我发现我自己的解决方案仅适用于有根设备(需要Shell库):

public static int getCutoutHeight() {
    CommandResult result = Shell.SU.run("dumpsys display | grep mCurrentDisplayRect");
    String output = result.getStdout();
    String regex = "^\\s+mCurrentDisplayRect=Rect\\(\\d+, (\\d+) - \\d+, \\d+\\)*$";
    if (output != null) {
        if (output.matches(regex)) {
            Pattern patt = Pattern.compile(regex);
            Matcher matcher = patt.matcher(output);
            if (matcher.find()) {
                return Integer.parseInt(matcher.group(1));
            }
        }
        else Log.e(TAG, "Unexpedted outptu: " + output);
    }
    else Log.e(TAG, "Command failed: " + result.getStderr());
    return 0;
}

希望很快会有更好的答案。

于 2020-04-23T14:39:29.637 回答