2013-03-06 46 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