Android的適配

Android的適配分爲3個方面的適配:語言、屏幕、android版本的適配。
本節只講第二種—屏幕的適配:
Android的不同屏幕可以通過2個屬性劃分:尺寸、密度。可預料到我們的app會被安裝在一系列的尺寸、密度不同的屏幕中。因此,我們應該包含一些可以替代的資源來優化我們的app在不同屏幕下的顯示效果。
4種常見的尺寸: small, normal, large, xlarge。
4種常見的密度: low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。
用來適配不同屏幕的佈局和圖片資源,需要放在單獨的文件夾中,就想是區分語言那樣。
衆所周知,屏幕的方向(水平、垂直)也被是爲屏幕尺寸的一種,所以很多app都應該修改佈局來讓用戶在每個方向有更好的體驗。
①創建不同的佈局
爲了優化app在不同屏幕尺寸上的用戶體驗,我們應該爲每個屏幕尺寸創建單獨的xml佈局文件。每個佈局都應該存放在合適的資源文件夾下,並以尺寸做後綴命名。例如一個適用於大屏幕的佈局文件應該放在res/layout-large下。
注意:android會自動調節佈局來更好的適應屏幕。因此,針對不同屏幕的佈局文件不需要過度擔心UI組件的絕對大小,跟應該集中調節那些可能影響用戶體驗的佈局結構(例如,重要視圖與同級視圖之間的位置、或者尺寸)。
例如,一個項目包含一個默認的佈局和一個針對大屏幕的替換佈局。
MyProject/
res/
layout/
main.xml
layout-large/
main.xml
文件的名字必須命名爲一樣,但是他們在匹配的屏幕尺寸中提供不同的內容去優化UI。
你經常使用的最簡單的對佈局文件的引用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

系統根據app運行設備的屏幕尺寸,從合適的佈局文件夾下加載佈局文件。想知道更多android如何選擇合適的資源,請參考 Providing Resources guide。
另外一個例子,這個項目包含一個可替換的水平方向佈局文件夾。
MyProject/
res/
layout/
main.xml
layout-land/
main.xml

默認的,layout/main.xml被用於垂直方向。
如果你想爲大屏幕提供一個水平佈局,你需要同時使用large 和 land 修飾詞。
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
注意:android3.2及其以上版本支持一種定義屏幕尺寸的新方法,允許你根據屏幕的最小寬度和高度的非密度制約像素,指定屏幕的資源。本節並沒有講到這種技術。
②創建不同的圖片資源
你應該一直提供圖片資源給合適的密度桶:low, medium, high and extra-high density。這有助於在所有的屏幕上取得高品質效果和性能。
爲了生成這些圖片,你應該先確保你生成的是矢量圖,生成每個密度的圖片都遵循以下尺寸規範:
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,系統都會根據屏幕密度選擇合適的圖片。
注意:Low-density (ldpi)並不是必須的。當你提供hdpi資源後,系統會縮放其一半來適配ldpi屏幕。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章