1

目前我测量设备的 DPI,然后根据 DPI 在一定数量的像素处画一条线(如果 DPI 为 320,那么我每 320 像素显示一条线)。

我可以在某些设备上使用它,但是其他设备却很遥远,这让我很困惑...

关于我做错了什么的任何建议?

这是我用来获取设备 DPI 的代码(以及其他各种内容)

    metrics = context.getResources().getDisplayMetrics();
    width = metrics.widthPixels;
    height = metrics.heightPixels;
    xdpi = metrics.xdpi;
    ydpi = metrics.ydpi;
    densityDpi = metrics.densityDpi;

然后这是我在屏幕顶部绘制线条的方式。

    x = 0;
    while (x <= width) {
        canvas.drawLine(x, 0, x, lineHeight, paint);
        x = x + xdpi;
    }

起初我使用变量 densityDpi 来绘制线条,但后来我发现那只是一个估计的 DPI。所以我将代码更改为 xdpi,它应该基于屏幕的实际像素,但在某些设备上仍然不准确。

4

1 回答 1

3

我遇到了同样的问题,需要画出与现实生活中完全相同大小的硬币。每个设备都应报告其正确的 DPI,但一些(少数)设备只是提供错误的数据。我最终允许用户手动调整图像大小。

于 2013-01-07T19:58:55.113 回答