2012-05-19 51 views
0

我有一個過程,做兩個圖像的合成,並且它在我的所有設備上都表現出色,除了我的星系之外,由於我無法理解的原因誤報了藝術的尺寸,約30%。爲什麼ICS會以比實際更大的尺寸拉取圖像?

我已經嘗試把藝術放在一個drawable和drawable_hdpi文件夾中(不是那應該重要),但圖像總是被拉到這個錯誤的大小。我不是DPI的專家,但事情是,所有這一切都發生在任何地方之前。我只是簡單地從資源中加載位圖,並詢問它的尺寸是多少,並將這個數字增加了30%。它使我對這個形象被炸燬的神祕感加深了!所以,它在這個過程中也失去了質量。

有沒有人有任何想法可能會導致此?我只有一個ICS設備(三星Nexus),所以我不確定這是ICS問題還是設備問題。

我通過將藝術縮放到其原始大小來解決它,但花了我一段時間才弄清楚到底發生了什麼,我很想知道我是否忽略了一些非常重要的東西藝術如何在ICS中存儲和閱讀,或者這只是一個錯誤。

TIA

回答

4

Android的自動縮放資源向上(向下),當他們不提供設備的本機密度(xhdpi了Galaxy Nexus的)docsmore docs

所以,如果你有一個形象,是只有mdpi文件夾在100x100系統將自動擴展到150x150爲hdpi和200x200爲xhdpi。顯然你會失去質量,所以你應該提供多種密度的圖像(通常是hdpixhdpi)。如果您不想讓圖像縮放,則可以將其放在nodpi文件夾或assets文件夾中。

mdpi是基線,因爲它是第一裝置(G1)的密度和是160dpi

hdpi是240dpi(1.666 * MDPI)

xhdpi是320dpi(2 * MDPI)

現在,當您通過BitmapFactory讀取資源時,它將報告已爲您縮放的圖像的尺寸,而不是實際的資源尺寸。在大多數情況下,這是你想要發生的事情。

+0

這是一個非常有用的答案!謝謝!我希望我能投票兩次。我猜我現在唯一不理解的是爲什麼Nexus xhdpi,即使xyboard是hdpi(xyboard比nexus更堅決)......他們究竟在用什麼來確定哪個設備會想到本身作爲哪個桶? –

+0

它是分辨率和密度的組合,因此每英寸的像素點數多於xyboard。密度是一個重要的衡量標準,因爲它允許按鈕在所有屏幕上的物理尺寸(手指下的英寸數)相同。該公式在第二個鏈接'px = dp *(dpi/160)'中,但你從不需要它。 – smith324

相關問題