当我开始使用 PhoneGap(一个标尺)开发一个简单的应用程序时,我遇到了一个问题。我的大部分移动背景都是使用原生 Android,所以我就从它开始。我是 javascript 和 html5 以及一般 Web 开发的初学者。
Here https://stackoverflow.com/questions/12547716/how-to-draw-a-simple-ruler-with-javascript/12547974#12547974你可以看到我与该问题相关的第一个问题。
这是我第一次尝试计算一毫米中有多少个像素。这在 Android 本机代码中运行良好。
public float getYdpi() {
return displayMetrics.ydpi;
}
function getPixelsPerMillimeter(){
return YDpi/25.4f;
}
但毫米标记画错了。最后经过一番尝试我更换了如下方法
function getPixelsPerMillimeter(){
var pixelsPerMms = window.innerHeight/heightInMms;
return pixelsPerMms;
}
HeightInMms 是在原生 Android 代码中计算的,简单的数学高度(以像素为单位)除以每英寸的密度像素,再乘以 25.4,即一英寸有多少毫米。
public float getPhoneHeightInMillimeters(){
metrics = gap.getResources().getDisplayMetrics();
return (metrics.heightPixels / metrics.ydpi)*25.4f;
长话短说,我从本机代码或使用 window.outerHeight 获得的 dpi(或每英寸像素,这是我的最终目标)与我从 window.innerHeight 获得的不同。为什么?
给出真实值,我正在 Galaxy s2 设备上进行测试,高度为 800px。 window.outerHeight 返回 800,如metrics.heightPixels,但 window.innerHeight 给我 533。为什么?