支持不同的屏幕
Android 通過兩個屬性來分類不同的屏幕:大小和密度。你應該考慮到你的APP可能會安裝到不同大小和密度的設備上。因此,針對不同的屏幕,你應該有一些資源來讓你的APP的外表得到優化。
大小分四種:小,正常,大,特大
密度也分爲四種:低,中,高,特高
爲了給不同的屏幕設置不同的layout 和圖片,你必須把這些可供選擇的資源單獨放到一個目錄下面去,這個跟不同語言使用不同的字符串一樣。
屏幕方向(橫屏和豎屏)也是一種區分屏幕大小的屬性。所以你的APP應該優化在每個方向上的用戶體驗。
創建不同的佈局
爲了優化不同大小屏幕的用戶體驗,應該爲每個你所需要支持的屏幕創建一個獨立的XML 佈局文件。每一個佈局文件應該保存在合適的資源目錄,命名:-<屏幕大小>後綴。例如創建一個大屏幕的layout.目錄:res/layout-large/ ,並在這個目錄下創建相應的佈局文件。
注意:Android自動地衡量佈局來適配不同的屏幕,因此你不用擔心UI 元素的絕對大小,只需要關注影響用戶體驗的佈局結構(重要view之間的位置以及相對大小)。
此外,對於爲屏幕大小客製化的佈局文件命名必須都一樣,只要它們的內容做出改變和優化即可。
在代碼中使用時,可以忽視屏幕大小,正常使用。系統會根據當前屏幕的大小來決定應該從哪個目錄加載哪個佈局文件。更多關於系統如何選擇合適的資源見Providing Resources guide文章。
下面是關於橫屏時單獨提供的一個佈局文件:
MyProject/
res/
layout/
main.xml
layout-land/
main.xml
默認情況下,layout/main.xml 文件是豎屏時候用的。
如果你要定義一個佈局專門針對橫屏,大屏的機器,則你需要用到large 和land 兩個限定語。如下:
MyProject/
res/
layout/ # default (豎屏)
main.xml
layout-land/ # 橫屏
main.xml
layout-large/ # 大屏/豎屏
main.xml
layout-large-land/ # 大屏/橫屏
main.xml
注意:Android 3.2 以及以後的版本支持一個定義屏幕大小的高級方法。通過這個方法你能夠依據屏幕的最小寬度和高度以及與像素無關的密度來指定屏幕資源。本文沒有設計到這個方法,詳見:Desiging for Multiple Screens.
創建不同的位圖
對於不同密度的屏幕,你都需要相應的位圖資源,這樣才能保證在不同的機器上運行時的圖形質量和性能優異。
要生成這些圖片,在矢量格式中使用你的原生資源,來爲每種密度生成如下大小的圖片:
· xhdpi: 2.0
· hdpi: 1.5
· mdpi: 1.0 (baseline)
· ldpi: 0.75
這意味着如果 XHDPI 的圖片大小是 200 ×200話,那麼HDPI 就是 150 × 150
Mdpi 就是 100 × 100 ldpi就是75 *75
然後把圖片放到相應的目錄:
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
任何時候,當你引用@drawable/awesomeimage
這個圖片的時候,系統會根據當前屏幕的密度來選擇合適的圖片。
注意:LDPI的資源有時候可以不需要。因爲當你提供了一個HDPI資源時,系統會自動裁剪它得到LDPI的圖片。
更多關於創建APP ICON的指導詳見:Iconography design guide.