Android使用通常使用兩個屬性來對裝置的螢幕進行分類:尺寸和密度。你應該設想安裝你的應用程式的裝置螢幕的尺寸和密度的範圍。如,你應該包含一些可選的資源,來最佳化你的應用程式在不同尺寸和密度螢幕上的顯示外觀。 1. 四種一般性的尺寸:small、normal、large、xlarge 2. 四種一般性的密度:low(ldpi)、medium(mdpi)、high(hdpi)、extra high(xhdpi) 對於不同的螢幕所使用的布局和位元影像,你必須把它放到獨立的目錄中,類似於多語言支援。 還要注意螢幕方向(橫屏或豎屏)給螢幕尺寸所帶來的變化,因此很多應用程式需要修改布局,以便最佳化在每個方向中的使用者體驗。 建立不同的布局 要最佳化在不同螢幕尺寸上的使用者體驗,你應該給每種要支援的螢幕尺寸創意一個唯一的布局XML檔案。每種布局檔案都應該儲存在其對應的資來源目錄中,目錄名稱要用_<screen_size>作為尾碼。例如,針對大螢幕的唯一布局應該被儲存在res/layout_large/目錄下。 注意:為了正確的填充螢幕,Android會自動縮放你的布局。這樣,不同螢幕尺寸的布局就不必擔心UI元素的絕對尺寸,而是要關注影響使用者體驗的布局結構(如重要的View相對與兄弟View的尺寸或位置) 例如,包含預設布局和針對large螢幕的可選布局的項目: MyProject/ res/ layout/ main.xml layout-large/ main.xml 布局檔案名稱必須完全相同,但是為了提供對應螢幕尺寸的UI,它們的內容是不同的。 跟通常一樣,在你的應用程式中簡單的應用布局檔案即可: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } Android系統會基於運行你的應用程式的裝置的螢幕尺寸,來載入對應的布局檔案。更多的資訊,請參照“Providing Resources”指南。 下例是針對橫向螢幕的可選布局: 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以後,支援一種先進的定義螢幕尺寸的方法,它允許你使用基於密度無關的像素術語中的寬度和高度來給螢幕尺寸指定資源。本節課不包含這項新技術,更多資訊,請閱讀:Designing for Multiple Screens. 建立不同的位元影像 你應該始終給每種一般性密度提供正確縮放的位元影像資源:low、medium、high和extra-high。這有助於在所有螢幕密度上都獲得良好的圖形品質和效能。 要產生這些圖片,你應該用向量格式的原始資源,並且按照以下縮放比來產生每種密度下的圖片: 1. xhdpi:2.0 2. hdpi:1.5 3. mdpi:1.0(基準) 4. ldpi:0.5 這意味著,如果要給xhdpi裝置產生200x200的圖片,那麼相同的資源還有分別產生以下尺寸的圖片:用於hdpi的150x150;用於mdpi的100x100;用於ldpi的75x75. 然後把它們分別放到對應的可繪製資源目錄中: MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png drawable-ldpi/ awesomeimage.png不管何時引用@drawable/awesomeimage資源,系統都會基於螢幕的密度來選擇對應的位元影像。