在一个应用程序中,假设我们有一个汽车的图像,我们已经在其上标记了一个损坏点。我们可以在图像的任何位置标记这一点,如下所示。
假设我们在屏幕尺寸为“5英寸”的设备上标记了这一点,然后我们计算了这一点的坐标并将其发送到服务器。 现在用户正在使用屏幕尺寸为“8英寸”的另一台设备。用户希望在他的新设备中看到那些标记点。但是从服务器获取实际值后,他无法看到点的适当位置。
答案 0 :(得分:1)
我认为坐标取决于设备的屏幕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);
答案 1 :(得分:0)
获取屏幕的高度和宽度
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
(或类似的内容,取决于屏幕尺寸)的内容。
然后,您只需创建一个包含这两个浮点数的数组,并将其传递给服务器。