2013-03-06 43 views
0

设置VS组我在XML简单的ImageView:的Nexus 7 - 不同尺寸的图像的代码在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" /> 

现在,如果我引用代码视图和做:

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完成的,但任何人都可以告诉我如何以一种不会在其他设备上搞砸的方式来解决这个问题?

+0

根据我的知识,你应该更喜欢设置图像背景,如: android:background =“@ drawable/vote_favorite”试试这个,而不是android.src =“@ drawable/vote_favorite”; – Maulik 2013-03-06 07:07:48

+0

确保您只将hdpi图像放入drawable-hdpi文件夹中,而不是其他任何文件夹。 – Maulik 2013-03-06 07:32:42

回答

1

在创建应将自己缩放到“原生”分辨率的图像时,有几件事要做。

首先让我们说你有一个200x100像素的PNG文件。将此设为您的“基准”。

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

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

  • LDPI:150像素X 960x75像素(时报0.75倍MDPI)
  • MDPI:200像素X 100像素
  • HDPI:300像素x 150像素(时报MDPI由1.5倍)
  • xhdpi:400像素X 200像素(时报2.0倍HDPI)

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

+0

我明显忘记提及我加载相同的图像(来自hdpi)。 – kape123 2013-03-06 03:59:00

+0

TVDPI小于HDPI(213对240)。所以你的hdpi资源在屏幕上会变得更小。这就是为什么最好将基线放在xml标记中的dps中。 另外,如果你在XML中设置src,你不需要使用setImageBitmap ...你只需要加倍工作。 – 2013-03-06 04:01:21