為了針對不同的屏幕去優(yōu)化用戶體驗(yàn),我們需要為每一種將要支持的屏幕尺寸創(chuàng)建唯一的XML文件。每一種layout需要保存在相應(yīng)的資源目錄中,目錄以-為后綴命名戈钢。例如,對大尺寸屏幕(large screens)是尔,一個唯一的layout文件應(yīng)該保存在res/layout-large/中殉了。
為了匹配合適的屏幕尺寸Android會自動地測量我們自己設(shè)置的layout文件。所以不需要因不同的屏幕尺寸去擔(dān)心UI元素的大小拟枚,而應(yīng)該專注于layout結(jié)構(gòu)對用戶體驗(yàn)的影響薪铜。
例如,這個工程包含一個默認(rèn)layout和一個適配大屏幕的layout:
Project/
? ? res/
? ? ? ? layout/
? ? ? ? ? ? main.xml
? ? ? ? layout-large/
? ? ? ? ? ? main.xml
layout文件的名字必須完全一樣恩溅,為了對相應(yīng)的屏幕尺寸提供最優(yōu)的UI痕囱,文件的內(nèi)容不同。
如平常一樣在app中簡單引用:
@Override
protected void onCreate (Bundle savedInstanceState){
????????super.onCreate(savedInstanceState);? ??
?????????setContentView(R.layout.main);
}
系統(tǒng)會根據(jù)app所運(yùn)行的設(shè)備屏幕尺寸暴匠,在與之對應(yīng)的layout目錄中加載layout。
另一個例子傻粘,這一個工程中有為適配橫向屏幕的layout:
Project/
? ? res/
? ? ? ? layout/
? ? ? ? ? ? main.xml
? ? ? ? layout-land/
? ? ? ? ? ? main.xml
默認(rèn)的每窖,layout/main.xml文件用作豎屏的layout。
large和land修飾符
如果想給橫屏提供一個特殊的layout弦悉,也適配于大屏幕窒典,那么就要用到 large 和 land 修飾符啦。
Project/
? ? res/
? ? ? ? layout/? ? ? ? ? ? ? # default (portrait)
? ? ? ? ? ? main.xml
? ? ? ? layout-land/? ? ? ? # landscape
? ? ? ? ? ? main.xml
? ? ? ? layout-large/? ? ? ? # large (portrait)
? ? ? ? ? ? main.xml
? ? ? ? layout-large-land/? # large landscape
? ? ? ? ? ? main.xml