我正在尝试对我的应用程序进行一些 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实例返回不同的屏幕高度?