我有3種不同尺寸的資源。我已將其中一個放入drawable-hdpi
,一個放入drawable-mdpi
,另一放入drawable-xhdpi
。現在我想知道如果我在具有ldpi
(或tvdpi
或nodpi
,如果可能的話)上運行該應用程序會發生什麼情況? 如果將一個資源也放在drawable
文件夾中,那麼會更好嗎?如果屏幕密度沒有資源,屏幕上會發生什麼?
回答
您的系統將選擇「最佳」可用資源並相應地調整其大小。使用ldpi時,可能需要一個hdpi並將其削減一半。
隨着tvdpi,它可能是我,但我通常驚訝於它爲我挑選什麼。
因此,無論如何,我永遠不會得到一個異常或東西,如果沒有指定的資源? – Xander 2013-04-09 16:36:14
@ Merlin:對於drawables,這是正確的。儘管大多數其他資源類型需要精確匹配,因爲沒有自動轉換它們的方法。對於這些情況,如果您請求資源並且沒有匹配,則會發生'ResourceNotFoundException'。 – CommonsWare 2013-04-09 16:40:29
@CommonsWare好的,很明顯,謝謝! – Xander 2013-04-09 16:47:17
在大多數設備上,Android會從其他可繪製文件夾中選擇最近的可用資源(如mdpi不可用,則從ldpi或hdpi中選取)。
但是,在某些設備上,系統可能無法從其他文件夾獲取資源,這是由於實施錯誤。
最佳做法是,你應該始終使每個資源的副本中是完全不合格的文件夾(可繪製,價值觀等)/
「但是,在某些設備上,尤其是三星,系統不會從其他文件夾中獲取資源。」 - 嗯? – CommonsWare 2013-04-09 16:39:13
@CommonsWare我基於去年在Android聊天室中進行的討論,其中有人的應用程序不斷崩潰,因爲少數三星設備未能從其他資源文件夾加載資源。我試圖找到它,但是SO的聊天搜索需要相當準確的措辭,我不記得。 – 2013-04-09 16:40:30
這樣的設備不會通過CTS,AFAIK,所以我很難相信這實際上是這種情況。如果您可以識別出具有此行爲的某些設備,請告訴我,因爲我想進行一些研究。 – CommonsWare 2013-04-09 16:41:23
你必須要小心,在繪製對象的文件夾放圖像,無需任何修飾詞。不合格文件夾中的圖像與mdpi中的圖像相同,因此如果您在非限定文件夾中有大圖像,並且您嘗試將其分配給xhdpi手機中的ImageView,則Android會嘗試放大圖像,並可能它會創建一個「在XXXXXX字節分配上的內存不足」
- 1. 關於Android資源和屏幕密度
- 2. Android屏幕尺寸資源
- 3. 屏幕關閉時上傳任務會發生什麼?
- 4. 屏幕密度限定符
- 5. Android屏幕密度計算
- 6. Android:屏幕密度混亂?
- 7. Android篩選資源按屏幕大小和密度排列
- 8. Android-爲每個屏幕密度創建資源
- 9. 即使沒有按下按鍵,我如何在屏幕上發生什麼?
- 10. 爲什麼屏幕上有多個virtualenvs?
- 11. 如何在其他屏幕發生事件時更新屏幕?
- 12. 以多種屏幕分辨率填充整個屏幕,密度
- 13. 屏幕圖像沒有出現在屏幕上
- 14. java中沒有出現在屏幕上的加載器屏幕
- 15. UI屏幕「加載」時會發生什麼?
- 16. 離子2:在啓動屏幕期間會發生什麼?
- 17. 屏幕旋轉時碎片返回堆棧會發生什麼?
- 18. 手機屏幕關閉時會發生什麼?
- 19. Android沒有屏幕密鑰(僅語音)
- 20. 如何讓黑莓屏幕上的標題屏幕高度?
- 21. 如何獲得屏幕密度?
- 22. 爲什麼沒有覆蓋整個屏幕寬度?
- 23. 爲什麼屏幕不會變色?
- 24. 屏幕沒有導航反應原生
- 25. 覆蓋div不再在屏幕高度發生變化後填滿屏幕
- 26. 許多屏幕上的全屏幕(WPF)
- 27. 將屏幕移動到屏幕上
- 28. 添加屏幕寬度的一類,如果屏幕寬度小於960像素
- 29. MS CRM HTML web資源加載屏幕
- 30. Android |獲取屏幕高度,寬度和屏幕寬度,高度
http://stackoverflow.com/questions/11752997/how-mdpi-hdpi-xhdpi-folder-works – 2013-04-09 16:32:51
Android會自動選擇最適合的drawable爲當前設備。 – scf 2013-04-09 16:33:22