Android UiDevice getDisplayHeight()返回错误的值

问题描述 投票:0回答:1

我正在尝试在我的应用上进行一些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 instance像素,使用显示指标获得了2160 !!有谁对为什么UiDevice实例返回不同的屏幕高度有任何解释?

我正在尝试在我的应用上进行一些UI测试,我想获取显示尺寸,我在PIXEL 3仿真器UiDevice device = UiDevice.getInstance(...

android-espresso android-uiautomator
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.