在一个应用程序中,假设我们有一张汽车图像,我们在其上标记了一个损坏点。我们可以在图像的任何位置标记这一点,如下所示。

假设我们在一个屏幕尺寸为“5英寸”的设备上标记了这个点,然后我们计算了这个点的坐标并将其发送到服务器。现在用户正在使用另一个屏幕尺寸为“8英寸”的设备。用户希望在他的新设备中看到这些标记点。但是,在从服务器获取实际值之后,他无法看到点的适当位置。

发布于 2017-03-31 13:41:17
我认为坐标取决于设备的屏幕dpi。假设您的服务器始终将坐标存储在mdpi中。然后,您应该在不同dpi的设备上获得正确的坐标,如下所示:
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
float screenAdjust = (float) dm.densityDpi / 160f;
int x = (int) (x_value_from_server) * screenAdjust);
int y = (int) (y_value_from_server) * screenAdjust);发布于 2017-03-31 23:06:07
获取屏幕的高度和宽度
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;然后计算图像的坐标,我假设您当前正在以x,y array的形式执行此操作
然后,只需通过执行以下操作即可找到所有屏幕大小的比率:
float x_ratio = coordinatesArray[0]/width
float y_ratio = coordinatesArray[1]/height这将产生类似于0.25和0.34的东西(或者类似的东西,取决于屏幕的大小)
然后,您只需创建一个包含这两个浮点数的数组,并将其传递给服务器。
https://stackoverflow.com/questions/43132835
复制相似问题