Java 如何在Android设备上正确使用DPI绘制以英寸为单位的精确长度?

Java 如何在Android设备上正确使用DPI绘制以英寸为单位的精确长度?,java,android,dpi,Java,Android,Dpi,目前,我测量设备DPI,然后基于DPI在一定数量的像素处绘制一条线(如果DPI为320,则我每320像素显示一条线) 我有它在一些设备上工作,但其他的设备却离我很远,这让我很困惑 关于我做错了什么有什么建议吗 下面是我用来获取设备DPI的代码(以及其他各种代码) 下面是我如何在屏幕顶部画线的 x = 0; while (x <= width) { canvas.drawLine(x, 0, x, lineHeight, paint); x =

目前,我测量设备DPI,然后基于DPI在一定数量的像素处绘制一条线(如果DPI为320,则我每320像素显示一条线)

我有它在一些设备上工作,但其他的设备却离我很远,这让我很困惑

关于我做错了什么有什么建议吗

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

下面是我如何在屏幕顶部画线的

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

虽然(x我也有同样的问题,需要按照现实生活中硬币的确切大小来画一枚硬币。每个设备都应该报告它的正确DPI,但有些(很少)设备只是提供了错误的数据。我最终允许用户手动调整图像大小。

如果你让它在每个Android上运行,我会发现这更令人惊讶。X和Y DPI可能也不同。我能想到的唯一可靠但可能不可行的方法是让你自己的DB带有DPI。另一个选择是允许使用r通过让他们使用信用卡作为衡量标准来校准。这证实了目前为止的答案:没有可靠的方法来做到这一点。
    x = 0;
    while (x <= width) {
        canvas.drawLine(x, 0, x, lineHeight, paint);
        x = x + xdpi;
    }