Nexus 7 - 代码中设置的图像大小与XML中设置的大小不同

时间:2013-03-06 03:11:33

标签: java android nexus-7

我在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已经完成了,但是有人能让我知道如何以一种不会搞砸其他设备的东西的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

创建可以将自身扩展为“原生”分辨率的图像时,有几件事要做。

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

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

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

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

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