定規である PhoneGap を使用して簡単なアプリの開発を開始したときに、問題が発生しました。私のモバイル バックグラウンドのほとんどはネイティブ Android を使っているので、そこから始めています。私は JavaScript と html5 の初心者であり、Web 開発全般です。
ここで、この問題に関連する私の最初の質問を見ることができます。
これは、1 mm に何ピクセルあるかを計算する最初の試みでした。これは、Android ネイティブ コードで正常に機能します。
public float getYdpi() {
return displayMetrics.ydpi;
}
function getPixelsPerMillimeter(){
return YDpi/25.4f;
}
しかし、ミリ単位のマーカーが間違って描かれていました。最後に、いくつか試した後、次のようにメソッドを置き換えました
function getPixelsPerMillimeter(){
var pixelsPerMms = window.innerHeight/heightInMms;
return pixelsPerMms;
}
HeightInMms は、ネイティブ Android コードで計算されます。ピクセル単位の単純な数学の高さを、1 インチあたりの密度ピクセル数で割り、25.4 を掛けて、1 インチが何ミリになるかを計算します。
public float getPhoneHeightInMillimeters(){
metrics = gap.getResources().getDisplayMetrics();
return (metrics.heightPixels / metrics.ydpi)*25.4f;
簡単に言うと、ネイティブ コードから取得した dpi (または最終目標であるインチあたりのピクセル数) は、window.innerHeight から取得したものとは異なります。なんで?
実際の値を指定して、高さ 800px の Galaxy s2 デバイスでテストしています。window.outerHeight は metrics.heightPixels として 800 を返しますが、window.innerHeight は 533 を返します。なぜですか?