4

定規である 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 を返します。なぜですか?

4

1 に答える 1