源地址:http://wiki.eoe.cn/page/Supporting_Different_Screens android
Android用兩種常規屬性來分類設備屏幕:尺寸和像素密度。做爲開發者,你應當預料到你的android應用程序將會被安裝到不一樣屏幕尺寸和像素密度的設備上。所以,你的應用應當包含可選的資源來優化應用外觀,以便支持上述不一樣尺寸和像素密度的設備。app
* 有四種廣義的尺寸:small, normal, large, xlarge。ide
* 一樣也有四種廣義的像素密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。佈局
爲了聲明用於不一樣屏幕的不一樣layouts佈局和bitmaps資源,你必須把這些可選的資源文件分別放在不一樣的目錄,這一點相似於你在國際化時不一樣語言strings的操做。優化
同時要注意屏幕的方向(landscape or portrait)也被認爲是一種屏幕尺寸的變化,因此大多數應用都應該修改layout佈局來提升用戶在不一樣屏幕方向上的體驗。ui
爲了提升在不一樣設備屏幕上的用戶體驗,你應當爲每一種你想要支持的屏幕尺寸建立一個獨有的XML佈局文件。每一佈局文件應當存放到恰當的資源目錄下,該目錄以屏幕尺寸-做爲後綴。例如,一個用於大屏幕的佈局文件應當放在res/layout-large/目錄下面。spa
注:Android會自動縮放你的佈局以便適配屏幕。這樣,用於不一樣屏幕的佈局文件就沒必要過多考慮UI元素的絕對大小,相反應當關注於佈局的結構,這將直接影響用戶體驗(好比重要view視圖的大小或位置應當相對於同級view視圖)。設計
例如,下面的項目包含了一個默認的layout和一個可選的用於大屏幕的layout目錄:code
1 2 3 4 5 6 |
MyProject/ res/ layout/ main.xml layout-large/ main.xml |
目錄中的佈局文件名必須保持一致,可是它們的內容能夠不一樣,以便提供優化的UI來支持相對應的屏幕尺寸。orm
像往常同樣在app中簡單地得到layout佈局文件的引用:
1 2 3 4 5 |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } |
Android系統將根據你的app應用所運行設備的屏幕尺寸從適當的layout目錄加載佈局文件。更多關於Android系統如何選擇適當的資源文件能夠在 Providing Resources | 資源提供 - Providing Resources 指導中獲取。
下面是另一個案例,在這個項目中使用了可選的橫向佈局來支持橫向屏幕:
1 2 3 4 5 6 |
MyProject/ res/ layout/ main.xml layout-land/ main.xml |
缺省狀況下,layout/main.xml文件是垂直方向佈局的。
若是你想提供一個特殊的橫向佈局,好比支持大屏幕,你須要同時使用large和land來修飾。
1 2 3 4 5 6 7 8 9 10 |
MyProject/ res/ layout/ # default (portrait) main.xml layout-land/ # landscape main.xml layout-large/ # large (portrait) main.xml layout-large-land/ # large landscape main.xml |
注:*Android 3.2 及以上版本支持一種更好的方法來定義屏幕尺寸,它容許咱們在與密度無關的像素狀況下經過最小寬度和高度來爲不一樣屏幕指定資源。在本章節中咱們沒有涉及該新特性。若是想得到更多相關信息,請閱讀Designing for Multiple Screens | 多屏幕適配設計 - Designing for Multiple Screens
你應當爲全部廣義像素密度中的每一種都提供已經縮放好的適當的bitmap資源:低low, 中medium, 高high以及特高extra-high像素密度。這將使你的應用在全部分辨率的設備上都得到優良的圖形質量和呈現效果。
爲了生成這些圖片資源,你應當以矢量圖的格式來製做原始圖片資源,而後根據下面的縮放尺寸生成每一種分辨率的圖片:
特高分辨率xhdpi: 2.0
高分辨率hdpi: 1.5
中分辨率mdpi: 1.0 (基準)
低分辨率ldpi: 0.75
這意味着若是你要爲特高分辨率設備生成一張200x200的圖片,那麼你須要爲高分辨率設備生成150x150,中分辨率設備生成100x100,低分辨率設備生成75x75的圖片。
而後把這些文件放置到恰當的資源目錄:
1 2 3 4 5 6 7 8 9 10 |
MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png drawable-ldpi/ awesomeimage.png |
之後在你引用@drawable/awesomeimage時,系統將根據設備的分辨率自動選擇適當的圖片資源。
注:低分辨率(ldpi)的資源並不老是必需的。當你提供高分辨率資源時,系統將把它們對半縮放來適配低分辨率設備。
獲取更多關於建立應用圖標的技巧和設計指導,能夠查看Iconography design guide|圖標設計指南-Iconography design guide。