0

私は XML でシンプルな ImageView を持っています:

<ImageView
    android:id="@+id/imgItemFavorites"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="@string/foo"
    android:src="@drawable/vote_favorite" />

ここで、コードでそのビューを参照して実行すると、次のようになります。

ImageView img = (ImageView) llGenericList.findViewById(R.id.imgItemFavorites);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.vote_favorite, null);
img.setImageBitmap(bitmap);

ロードされた画像が小さいため、私の ImageView は小さくなります。これは、Nexus 7 の tvdpi が原因で行われる自動スケーリングと関係があると思いますが、他のデバイスで問題が発生しないように、これを堅牢な方法で修正する方法を誰か教えてもらえますか?

4

1 に答える 1

1

「ネイティブ」解像度に合わせて拡大縮小する画像を作成する場合は、いくつかのことを行う必要があります。

まず、200x100ピクセルのPNGファイルがあるとします。これを「ベースライン」にします。

android:layout_width = "200dp"とandroid:layout_height="100dp"を使用してイメージビューを作成します。

次に、デバイスの「カテゴリ」ごとに4つのバージョンのビットマップを提供し、提供されたリソースでビットマップをスケーリングする必要があります。

  • ldpi:150px x 75px(Times mdpi by 0.75x)
  • mdpi:200px x 100px
  • hdpi:300px x 150px(Times mdpi by 1.5x)
  • xhdpi:400px x 200px(Times hdpi by 2.0x)

Androidは、スケーリング時にリソースから適切なpngサイズを使用します。重要なのは、レイアウトのベースラインサイズを指定することです。

于 2013-03-06T03:39:22.223 に答える