2011-11-19 73 views
20

我的Android應用程序可繪製文件夾中的圖像分辨率爲1000x600。 我加載圖像爲位圖這樣位圖getWidth返回錯誤的值

Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image); 

在此之後我打電話bitMap .getWidth()返回1500怎麼可能?以及如何獲得正確的圖像寬度和高度?

回答

38

這可能是由於不同的密度。您的資源可能存儲在中等密度的文件夾中,但您的設備是hdpi。中密度爲160dpi,高密度爲240dpi。因此,您的位圖縮放爲原來大小的1.5倍。有關更多信息,請參閱document on multiple screens

如果資源的密度不正確,系統會加載默認資源,並根據需要調整它們的比例以匹配當前屏幕的密度。

如果您打算將其設置爲高密度,請將其置於drawable-hdpi而不是drawable或drawable-mdpi。

更新:

如果你想讓它忽略密度,把它放在一個繪製-nodpi文件夾。同樣來自同一個文檔:

避免預縮放的最簡單方法是將資源放入具有nodpi配置限定符的資源目錄中。例如:

res/drawable-nodpi/icon.png 

當系統使用的icon.png位圖從該文件夾,它不基於當前的器件密度縮放。

+0

在我的情況下,我不需要縮放,我需要爲所有屏幕尺寸相同的圖像。我想到的第一個解決方案是將該圖像複製到3個可繪製的文件夾,但是擁有3個相同圖像的副本並不是一個好主意。還有其他解決方案嗎? –

+2

如果你不想讓它們縮放,你可以把它們放在名爲drawable-nodpi的文件夾中。更多信息在這裏:http://developer.android.com/guide/topics/resources/providing-resources.html – Albin

+0

好的,答案已被編輯,該部分被添加,謝謝反正 –