天天看點

Android官方開發文檔Training系列課程中文版:支援不同的裝置之支援不同的螢幕

Android裝置螢幕分為兩個通用的屬性:尺寸和密度。你應該期待應用将會被安裝在螢幕的密度和尺寸都在範圍内的裝置上。正因為這樣,你應該包含一些可替換的資源,以便應用在不同尺寸的螢幕和不同密度的螢幕效果最優。

有4種普遍螢幕尺寸:small, normal, large, xlarge。、

還有4種普遍的螢幕密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。

為了對不同的螢幕聲明使用不同的布局和圖像,你必須将這些備選資源分開放置,和不同的語言字元串很類似。

這裡也應該意識到要考慮螢幕的方向,是以很多應用應該通過布局為不同的方向提供良好的使用者體驗。

為了在不同尺寸的螢幕上提升使用者體驗,你應該為想要支援的螢幕尺寸建立唯一的XML布局檔案。

每一個布局檔案應該保持在合适的資源目錄下,以-< screen_size>為字尾,唯一的大螢幕布局應該被儲存在目錄res/layout-large下。

Note: Android為了适配螢幕會拉伸你的布局。是以,不需要關心每一種尺寸的布局元素的絕對尺寸,而應該關心布局之間的結構關系,否則會影響使用者體驗。

下面這個工程為大螢幕提供了一個合适的布局。

檔案名稱要盡可能的準确,但是其中的内容為了不同尺寸的螢幕可以不一樣。

一般在代碼中簡單的引用下布局檔案:

像其它工程一樣,這個工程為水準方向提供了适當的布局:

預設情況下,layout/main.xml被用作于預設方向。

如果需要為大螢幕的水準方向螢幕提供布局,那麼你需要同時使用large和land辨別符:

你應該提供合适的位圖資源給每個通用的密度區域:low, medium, high and extra-high density,這可以幫助你在所有的密度下達到良好的圖像效果和性能。

為了産生這些圖像,你應該根據矢量格式的真實資源來為每一種密度提供擴充尺寸:

這裡的意思是說,如果你為xhdpi的裝置生成了一張200x200的圖像,那麼你應該為hdpi生成150x150的圖像,以此推類。

然後,将這些檔案放入到合适的圖像資源目錄下:

任何時候通過@drawable/awesomeimage引用圖像的時候,系統會根據密度選擇合适的位圖圖像。

Note: 低密度ldpi并不總是必須的。當你提供了hdpi的資源,系統會将hdpi資源縮小一半來适應ldpi的螢幕。

繼續閱讀