注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術一般,由于喜愛安卓而產生了翻譯的念頭,純屬個人興趣愛好。
原文鏈接: http://developer.android.com/training/basics/supporting-devices/screens.html
Android通過兩種參數來對屏幕進行分類:屏幕尺寸和分辨率。在開發時,應該將這兩個因素同時考慮進去,所以你應該將項目包含一些可選擇的資源文件,使得你的應用在不同的屏幕尺寸和分辨率上都能具有最佳的體驗。
- 概括地來說,一共有四種尺寸:小,標準,大,超大。
- 概括地來說,一共有四種分辨率:低(ldpi),中(mdpi),高(hdpi),超高(xhdpi)
為了聲明你希望在不同的屏幕使用不同的布局和位圖,你必須分別在不同的資源放置這些可選擇使用的資源,這和你為了支持不同語言所做的工作比較類似(參見上一篇博客: http://www.cnblogs.com/jdneo/p/3446617.html )
另外需要注意的是,屏幕的方向:橫屏(landscape)或豎屏(portrait)也是一種屏幕尺寸的變化,所以許多應用為了優化用戶體驗,會為每一個方向調整布局。
?
一). 創建不同的布局
為了在不同屏幕尺寸上獲得最佳的用戶體驗,你應該為你希望支持的每一個屏幕尺寸分別創建一個XML布局文件。每一個布局應該存儲在相應的資源目錄中,以“ -<screen_size> ”作為名稱后綴。例如,對應于大尺寸屏幕的的布局應該存放在“ res/layout-large/ ”這一目錄下。
Note:
Android會為了適當地適應屏幕自動調整你的布局。所以在你對應于不同屏幕尺寸的布局中,不需要擔心UI元素的絕對尺寸,而應該關注影響用戶體驗的布局結構(比如一些重要UI元素相對于其他元素的相對尺寸和相對位置)
例如,以下項目包含一個默認布局和一個對應于大尺寸屏幕上的布局:
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
Note:
Android 3.2及以上版本的系統可以通過一種更高級的方法來定義屏幕尺寸,這使你可以通過dip(density-independent pixels)來特定資源相對于屏幕大小的最小寬度和高度。更多信息可以閱讀: Designing for Multiple Screens
?
二). 創建不同的位圖
你應該為不同的分辨率密度的屏幕(低,中,高,超高)提供相應的資源文件。這可以幫助你在不同的屏幕上,獲取優秀的圖像質量性能表現。
為了創建這些圖像,你應該使用下述的尺寸參數將原始矢量圖的尺寸進行放大或縮小:
- xhdpi:2.0
- hdpi:1.5
- mdpi:1.0(基準)
- ldpi:0.75
這意味著如果你為一個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 ”,系統會根據屏幕的規格自動地選擇相應的圖像文件。
Note:
ldpi的資源并不一定一直是必須的。當你提供了hdpi的資源,系統會將它縮小一半來匹配ldpi的屏幕
有關創建應用圖標集的信息,可以閱讀: Iconography design guide
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
