0

I have simple ImageView in XML:

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

Now, if I reference that view in code and do:

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

My ImageView ends up being smaller since loaded image is smaller. I presume this has something to do with autoscaling that's done because of tvdpi of Nexus 7, but can anyone give me idea how I can fix this in a robus way that won't screw up things on other devices?

4

1 回答 1

1

在创建应将自身缩放到“原始”分辨率的图像时,需要做一些事情。

首先假设您有一个 200x100 像素的 PNG 文件。将此作为您的“基线”。

使用 android:layout_width="200dp" 和 android:layout_height="100dp" 创建你的 imageview。

然后,您需要为每个“类别”的设备提供 4 个版本的位图,并在您提供的资源中缩放位图:

  • ldpi:150px x 75px(乘以 mdpi 0.75x)
  • mdpi:200 像素 x 100 像素
  • hdpi:300px x 150px(乘以 mdpi 1.5x)
  • xhdpi:400px x 200px(乘以 hdpi 2.0x)

缩放时,Android 会从您的资源中使用正确的 png 大小。重要的是指定布局中的基线大小。

于 2013-03-06T03:39:22.223 回答