0

私はAndroidアプリケーションに取り組んでいます。別のレイアウトフォルダを使用しました。レイアウトのように、layout-large、layout-xlarge。すべての解像度に合わせて調整できるようにします。しかし、私は活動中に画像を動的に設定しています。画面の解像度に応じて変更するにはどうすればよいですか?解像度を変更した場合、大きすぎる画像が小さすぎる画像に置き換わるのはどれくらいですか?

4

1 に答える 1

1

Android は、l(低)dpi から xx(エクストラ エクストラ)h(高)dpi までの密度バケットで動作します。

次のように、フォルダーにさまざまなバージョンの画像を作成したい

  • drawable-ldpi
  • ドローアブル-mdpi
  • ドローアブル hdpi
  • ドローアブル-xhdpi
  • Nexus 10 をサポートする場合は drawable-xxhdpi を使用します。

これは、さまざまなサイズのさまざまなレイアウトを定義できる、レイアウトの大きなフォルダーとは少し異なります。

2 つのかなり異なる点については、 Androidのスクリーン プラクティスで詳しく読むことができます 。

======= 編集; これは正確には問題ではなかったようです。

「正しい方法」で実行している場合、動的に追加する場合でも、Android システムは正しい画像を選択します (Java コードから R.drawable.my_image を呼び出すこともできます)。

何らかの理由で選択する必要がある場合は、(少し古い)のようなもので現在の密度を簡単に確認できます。

public String getDensity() {
    String density;
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    // will either be DENSITY_LOW (120) , DENSITY_MEDIUM (160) or
    // DENSITY_HIGH (240)
    switch (dm.densityDpi) {
    case 120:
        density = "ldpi";
        break;
    case 160:
        density = "mdpi";
        break;
    case 240:
        density = "hdpi";
        break;
    // use hdpi as default, because flurry shows this will be suited for
    // most of our users.
    default:
        density = "hdpi";
        break;
    }
    return density;
}
于 2013-03-12T09:07:50.660 に答える