在android中使用不同屏幕尺寸的坐标?

时间:2017-03-31 05:05:24

标签: android android-canvas

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

Image 1:

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

Image 2:

2 个答案:

答案 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.250.34(或类似的内容,取决于屏幕尺寸)的内容。

然后,您只需创建一个包含这两个浮点数的数组,并将其传递给服务器。