5

layout-swdp 修飾子を使用すると、添付ファイルに示すような結果が得られます。sw 修飾子は、最小の次元が修飾子と一致するか、それよりも大きくなければならないことを意味すると想定されています。これは、Nexus 7 (4.2.1 を実行) では機能しないようです。最小幅修飾子の機能について混乱していますか、それとも N7 の報告が間違っていますか?

テスト ケースを再現するために、多くの layout-swdp フォルダーがあります。それぞれに2つのテキストフィールドがあります。1 つ目は、それがどのフォルダーにあるかを示しているだけです。次は以下のコードです。

private CharSequence collectScreenStats() {
    StringBuilder str = new StringBuilder();
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    int dpWidth = (int)(width / metrics.density);
    int dpHeight = (int)(height / metrics.density);
    str.append(Build.MANUFACTURER);
    str.append(" ");
    str.append(Build.MODEL);
    str.append("\n");
    str.append("Pixels: ");
    str.append(width);
    str.append(" x " );
    str.append(height);
    str.append("\nDp (px / density): ");
    str.append(dpWidth);
    str.append("dp x " );
    str.append(dpHeight);
    str.append("dp" );
    str.append("\nsmallest w: " + Math.min(dpWidth, dpHeight));
    str.append("\ndensity: ");
    str.append(metrics.density);
    str.append("\ndensityDpi: ");
    str.append(metrics.densityDpi);

    return str;
}

ここに画像の説明を入力

4

1 に答える 1

3

わかりました、これは ICS のバグのようです。クロムを考慮しているため、画面全体のピクセル数が正確に報告されません。

Android DisplayMetrics が ICS のピクセル単位で誤った画面サイズを返す

したがって、nexus 7 は 1280 x 736 ではなく 1280 x 800 であるため、上記のディスプレイ番号はオフです。正しい番号を使用すると、すべてが機能します。

于 2013-01-31T01:45:24.053 に答える