【问题标题】:Most Accurate Measurements Possible - Android最准确的测量可能 - Android
【发布时间】:2016-07-31 23:58:08
【问题描述】:

我正在尝试在 Android 上为任何设备创建准确的标尺,但遇到了问题。基本上,我的测量值对于我的两个不同设备来说太远了。我预计会是这种情况,但不是因为它正在发生的程度。

目前对于 onTouchEvent,我只需使用以下代码以英寸为单位打印 x 位置

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    float x = event.getX()/metrics.xdpi;
    System.out.println(x);
    return true;

我得到以下结果

http://imgur.com/S85Kmsr(3.01 应该是 3.10)

基本上,我的模拟器总是偏离 0.1 英寸,而我的 Galaxy s5 连续上升大约 0.5 英寸

对于这些结果,我使用 1dp 的标记宽度和 8 dp 的标记间距。这为我的 s5 提供了最准确的结果。

10dp 是 0.625 英寸,即每个标记之间应间隔多远。

尽管 1dp 宽度和 8dp 分离在我的 S5 上为我提供了准确的结果,1dp 宽度和 9dp 分离(应该是什么)在 android 模拟器上给了我完美的结果。但是,在我的 S5 上,测量值每英寸相差 0.16 英寸。

老实说,我不知道该怎么做。我希望这在所有设备之间尽可能准确。

【问题讨论】:

    标签: android units-of-measurement


    【解决方案1】:

    通过模拟器信任真实设备。但至于精确的测量 - 你不会完美地得到它们。 dp 是 1/160 英寸,但真正的 dpi 并不是那么干净——星系 s5 是 432。1 dp 是 2.7 像素,这意味着 8 dp 是 21.6 像素。所以你会减少 0.6/21.6 或 2.7%。

    如果您在标尺的过程中看到越来越多的错误,这可以修复 - 这可能是因为您的数学运算方式允许附加错误。但是你需要发布你的 onDraw 来修复它。

    【讨论】:

    • 奇怪的是,当我在模拟器上将分隔宽度从 8 更改为 9 时,错误并没有增加。每英寸标记有 8 个,误差增加 0.1,但 9 我得到每英寸的确切答案。
    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 2016-11-29
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多