我正在尝试在我的应用上进行一些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(...
如果要获取屏幕的实际大小,而不是根据系统装饰进行调整(如状态栏),则应使用https://developer.android.com/reference/androidx/test/uiautomator/UiDevice.html#getdisplaysizedp。