2011-06-16 53 views
13

我對這些目錄中的每一個都有一個粗略的概念,但我對這個概念並不十分清楚,並且我有一些具體問題。解釋drawable,drawable-ldpi,drawable-mdpi和drawable-hdpi之間的區別

例如,每個目錄的目標DPI是什麼?當你創建一個資產時,它應該在那個目標DPI上嗎?還是應該在更普通的72dpi screen DPI上?如果您的目標是多個設備,是否可以將PNG繪製爲可繪製的,或者您是否總是針對特定屏幕定製多個版本?

謝謝。

+0

我希望有更多的東西比文檔的鏈接。我已閱讀/瀏覽了screen_support文檔,但我仍然有上面的具體問題。 – 2011-06-16 14:16:17

回答

35

正如其他人所說,Android的在線文檔對這個偉大的文章。但是,我將嘗試在此列出一些快速且有用的提示:

  1. 考慮MDPI是1。然後,LDPI是0.75,HDPI是1.5。這意味着如果在MDPI屏幕上有一個可繪製的圖案,例如50x50,則它必須在LDPI屏幕上爲~37x37,在HDPI屏幕上爲75x75爲了在物理尺寸大致相同的情況下顯示每個屏幕(如果您在屏幕上放置標尺,則爲2釐米)。此外,您的電腦屏幕是最有可能 MDPI,這就是爲什麼它建議先從MDPI drawables,然後調整它們:物理大小的可繪製將非常接近你的電腦屏幕和MDPI Android設備之間。如果您在計算機和HDPI設備上查看可繪製的HDPI,您將注意到它在電腦屏幕上變大了(再次,物理 - 放置了一個標尺)。
  2. 如果您不提供每種密度的特殊drawable,Android會自動縮放最近的一個。
  3. 您不應該認爲設備的DPI與屏幕尺寸和/或像素數量和/或分辨率和/或寬高比有關。一個設備可以非常小,並有一個HDPI屏幕或非常大,並有一個LDPI屏幕。這種密度區分的全部要點是讓所有設備上的東西看起來大小相同而不是在所有設備上都相同。例如,如果一個可繪製的圖形填充整個屏幕上的一個MDPI設備,不要指望它在另一個MDPI設備上執行相同的操作。另外,不要指望在不同的DPI設備上「看到同樣的事情」。大多數HDPI設備實際上具有比較低DPI設備更多的空間空間。例如,如果一個ListView可以在MDPI設備上顯示5個項目,它可能能夠在HDPI設備上顯示6個項目,儘管事實上ListView項目具有相同的密度獨立性(即,HDPI的1.5倍在MDPI)高度。

我可能有點偏離主題,但這些都是我通過猛撞我的頭腦來對付他們的情況。只是想拯救別人的頭痛:)

+3

這可能會有所幫助:http://blog.blundell-apps.com/list-of-android-devices-with-pixel-density-buckets/ – Blundell 2012-06-05 16:40:27

+0

感謝@Felix的清晰解釋。我讀過很多其他帖子,但無法理解!這對我來說真的很清楚! – 2013-12-14 00:03:28

+0

要添加到您的第一點,XHDPI是'2'而XXHDPI是'3'。因此,以MDPI屏幕上的50x50可繪製爲例,它必須在XHDPI屏幕上顯示爲「100x100」,在XXHDPI屏幕上顯示爲「150x150」。 – Nick 2014-01-08 16:17:21

1

有每個文件夾沒有確切的DPI值。每個文件夾都與某個範圍有關。請參閱:http://developer.android.com/guide/practices/screens_support.html

這些目錄必須包含爲某些屏幕密度優化的可繪製資源。您可以只保存一個HDPI或其他任何可繪製的畫布,但在具有其他DPI設置的設備上,圖像將以某種方式調整大小,並且需要時間/資源。具有HDPI的設備的低DPI圖像看起來很差。

1

由於屏幕尺寸和分辨率不同,Android可讓您根據文件夾排列可繪製圖像。高dpi顯示圖像應放置在hdpi中,並且類似於mdpi和ldpi。如果操作系統與任何dpi類別不匹配,或者在特殊dpi目錄中找不到資源,系統將從drawables目錄中選擇資源,則drawable的默認文件夾是可繪製的。

尺寸並不精確,但高達130dpi它被認爲很小,從130到180它可以被認爲是mdpi,從180到200它可以被認爲是hdpi而較高被歸類爲xdpi。

http://developer.android.com/guide/practices/screens_support.html

相關問題