可能的最精确测量-Android
我试图在Android上为任何设备创建一个精确的标尺,但我遇到了一个问题。基本上,我的测量距离我的两个不同的设备太远了。我本以为会是这样,但不是因为它发生的程度 目前,对于onTouchEvent,我只是用以下代码以英寸为单位打印x位置可能的最精确测量-Android,android,units-of-measurement,Android,Units Of Measurement,我试图在Android上为任何设备创建一个精确的标尺,但我遇到了一个问题。基本上,我的测量距离我的两个不同的设备太远了。我本以为会是这样,但不是因为它发生的程度 目前,对于onTouchEvent,我只是用以下代码以英寸为单位打印x位置 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); float x = ev
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float x = event.getX()/metrics.xdpi;
System.out.println(x);
return true;
我得到了以下结果
(3.01应为3.10)
基本上,我的模拟器是不断的。1英寸,我的银河s5不断上升约。5英寸
对于这些结果,我使用了1dp的标记宽度和8dp的标记间隔。这为我的s5提供了最准确的结果
10dp为0.625英寸,即每个标记之间应间隔一英寸的距离
尽管1dp宽度和8dp间隔在我的S5上给了我准确的结果,1dp宽度和9dp间隔(应该是什么)在android模拟器上给了我完美的结果。然而,在我的S5上,测量值每英寸偏离0.16英寸
我真的不知道该怎么办。我希望这在所有设备之间尽可能准确。通过模拟器在所有事情上信任真实设备。但至于精确的测量,你不会得到完美的结果。dp是1/160英寸,但真正的DPI并没有那么干净——星系s5是432。1 dp为2.7像素,即8 dp为21.6像素。所以你会减少0.6/21.6或2.7%
如果你在尺子的使用过程中发现误差越来越大,这是可以解决的——很可能是因为你在做数学时允许了加性误差。但是你需要发布你的onDraw来修复它。奇怪的是,当我在emulator上将间隔宽度从8更改为9时,没有增加错误。每英寸标记8,误差增加0.1,但每英寸9,我得到准确答案。