2012-06-05 47 views
0

我目前正在構建一個Android應用程序(遊戲)。我創建了所有圖像的ldpi,mdpi和hdpi(所有這些圖像的尺寸都經過了適當的計算)。Android'drawable'文件夾選擇問題

當我測試在我的三星S3遊戲,下面的代碼的值是2.0。

getResources().getDisplayMetrics().density; 

這是正確的,應用程序中使用的所有圖像都是從drawable-hdpi文件夾中自動選擇的。

然而,當我測試在我的谷歌Nexus One的應用中,上述代碼的計算結果爲1.5(正確),並且還從所述可拉伸-HDPI文件夾的圖像仍然自動選擇。

僅供參考,我加載位圖以這種方式:

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options(); 
bmpFactoryOptions.inScaled = false; 
Bitmap exampleBitmap = BitmapFactory.decodeResource(gamePanel.getResources(), R.drawable.example, bmpFactoryOptions); 

編輯:刪除第二行仍不能解決問題。

難道我做錯了什麼?如果是這樣,什麼?或者,有沒有解決方法?

許多在此先感謝。

回答

4

三星Galaxy SIII是XHDPI設備。

Nexus的一個是HDPI設備。

參考:

http://blog.blundellapps.com/list-of-android-devices-with-pixel-density-buckets/

因此,因爲你沒有XHDPI資源,它使用下一個最接近的SIII(華電國際)。

+1

謝謝你簡潔地解決這個問題。該參考文獻爲我提供了大量額外的細節。文章底部的圖片特別有用。我會給你'最佳答案',因爲所引用的文章可能最適用於與像素密度有關的一般問題(對於未來尋找答案的人)。 –

1

我相當肯定的是,S3(2.0密度)是xhdpi,而Nexus之一(1.5密度)HDPI。 1.0是參考密度(mdpi)。最有可能發生的事情是,由於您沒有提供xhdpi資源,因此S3會回退到hdpi文件夾,並且Nexus One會正確地從hdpi文件夾中提取。

+0

啊哈!我沒有意識到2.0鏈接到xhdpi(我愚蠢地認爲1.0鏈接到ldpi)。非常感謝您的及時回覆,您爲我節省了很多挫折。 –

+1

@WillManson 1.0意味着1和MDPI的比率是「基準」分辨率。這裏有一個圖像來解釋:http://developer.android.com/images/screens_support/screens-densities.png – Blundell