0

我正在尝试对我的应用程序进行一些 UI 测试,并且我想获得显示尺寸,我在PIXEL 3模拟器上的测试用例中使用了以下代码段

UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
int displayHeight = device.getDisplayHeight(); // retunrs 2028
int displayWidth = device.getDisplayWidth(); // returns 1080

return String.format("%sx%s", displayWidth, displayHeight); // returns ("1080x2028")

但是,我在生产代码中使用传统DisplayMetrics方式来获取屏幕尺寸,如下所示:

private static DisplayMetrics getDisplayMetrics(Context context) {
        Display defaultDisplay = ((WindowManager) context.getSystemService(Context
                .WINDOW_SERVICE)).getDefaultDisplay();
        DisplayMetrics displayMetrics = new DisplayMetrics();
        defaultDisplay.getMetrics(displayMetrics);
        if (Build.VERSION.SDK_INT >= 17) {
            defaultDisplay.getRealMetrics(displayMetrics);
        }
        return displayMetrics;
    }

    public static String getScreenSize(Context context) {
        DisplayMetrics displayMetrics = getDisplayMetrics(context);
        int displayHeight = displayMetrics.heightPixels; // retunrs 2160
        int displayWidth = displayMetrics.widthPixels; // returns 1080
        return String.format("%sx%s", displayWidth, displayHeight); // returns ("1080x2160")
    }

2028使用UiDevice instance2160使用显示指标得到了高度的像素!有没有人解释为什么UiDevice实例返回不同的屏幕高度?

4

1 回答 1

0

如果您想获得屏幕的实际大小,而不是根据系统装饰(如状态栏)进行调整,您应该使用https://developer.android.com/reference/androidx/test/uiautomator/UiDevice.html#getdisplaysizedp 。

于 2020-01-04T00:45:00.120 回答