2013-04-09 43 views
1

我有3種不同尺寸的資源。我已將其中一個放入drawable-hdpi,一個放入drawable-mdpi,另一放入drawable-xhdpi。現在我想知道如果我在具有ldpi(或tvdpinodpi,如果可能的話)上運行該應用程序會發生什麼情況? 如果將一個資源也放在drawable文件夾中,那麼會更好嗎?如果屏幕密度沒有資源,屏幕上會發生什麼?

+0

http://stackoverflow.com/questions/11752997/how-mdpi-hdpi-xhdpi-folder-works – 2013-04-09 16:32:51

+1

Android會自動選擇最適合的drawable爲當前設備。 – scf 2013-04-09 16:33:22

回答

3

您的系統將選擇「最佳」可用資源並相應地調整其大小。使用ldpi時,可能需要一個hdpi並將其削減一半。

隨着tvdpi,它可能是我,但我通常驚訝於它爲我挑選什麼。

+0

因此,無論如何,我永遠不會得到一個異常或東西,如果沒有指定的資源? – Xander 2013-04-09 16:36:14

+1

@ Merlin:對於drawables,這是正確的。儘管大多數其他資源類型需要精確匹配,因爲沒有自動轉換它們的方法。對於這些情況,如果您請求資源並且沒有匹配,則會發生'ResourceNotFoundException'。 – CommonsWare 2013-04-09 16:40:29

+0

@CommonsWare好的,很明顯,謝謝! – Xander 2013-04-09 16:47:17

2

在大多數設備上,Android會從其他可繪製文件夾中選擇最近的可用資源(如mdpi不可用,則從ldpi或hdpi中選取)。

但是,在某些設備上,系統可能無法從其他文件夾獲取資源,這是由於實施錯誤。

最佳做法是,你應該始終使每個資源的副本中是完全不合格的文件夾(可繪製,價值觀等)/

+0

「但是,在某些設備上,尤其是三星,系統不會從其他文件夾中獲取資源。」 - 嗯? – CommonsWare 2013-04-09 16:39:13

+0

@CommonsWare我基於去年在Android聊天室中進行的討論,其中有人的應用程序不斷崩潰,因爲少數三星設備未能從其他資源文件夾加載資源。我試圖找到它,但是SO的聊天搜索需要相當準確的措辭,我不記得。 – 2013-04-09 16:40:30

+0

這樣的設備不會通過CTS,AFAIK,所以我很難相信這實際上是這種情況。如果您可以識別出具有此行爲的某些設備,請告訴我,因爲我想進行一些研究。 – CommonsWare 2013-04-09 16:41:23

0

你必須要小心,在繪製對象的文件夾放圖像,無需任何修飾詞。不合格文件夾中的圖像與mdpi中的圖像相同,因此如果您在非限定文件夾中有大圖像,並且您嘗試將其分配給xhdpi手機中的ImageView,則Android會嘗試放大圖像,並可能它會創建一個「在XXXXXX字節分配上的內存不足」