注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術(shù)一般,由于喜愛安卓而產(chǎn)生了翻譯的念頭,純屬個(gè)人興趣愛好。
原文鏈接: http://developer.android.com/training/basics/supporting-devices/screens.html
Android通過兩種參數(shù)來對(duì)屏幕進(jìn)行分類:屏幕尺寸和分辨率。在開發(fā)時(shí),應(yīng)該將這兩個(gè)因素同時(shí)考慮進(jìn)去,所以你應(yīng)該將項(xiàng)目包含一些可選擇的資源文件,使得你的應(yīng)用在不同的屏幕尺寸和分辨率上都能具有最佳的體驗(yàn)。
- 概括地來說,一共有四種尺寸:小,標(biāo)準(zhǔn),大,超大。
- 概括地來說,一共有四種分辨率:低(ldpi),中(mdpi),高(hdpi),超高(xhdpi)
為了聲明你希望在不同的屏幕使用不同的布局和位圖,你必須分別在不同的資源放置這些可選擇使用的資源,這和你為了支持不同語言所做的工作比較類似(參見上一篇博客: http://www.cnblogs.com/jdneo/p/3446617.html )
另外需要注意的是,屏幕的方向:橫屏(landscape)或豎屏(portrait)也是一種屏幕尺寸的變化,所以許多應(yīng)用為了優(yōu)化用戶體驗(yàn),會(huì)為每一個(gè)方向調(diào)整布局。
?
一). 創(chuàng)建不同的布局
為了在不同屏幕尺寸上獲得最佳的用戶體驗(yàn),你應(yīng)該為你希望支持的每一個(gè)屏幕尺寸分別創(chuàng)建一個(gè)XML布局文件。每一個(gè)布局應(yīng)該存儲(chǔ)在相應(yīng)的資源目錄中,以“ -<screen_size> ”作為名稱后綴。例如,對(duì)應(yīng)于大尺寸屏幕的的布局應(yīng)該存放在“ res/layout-large/ ”這一目錄下。
Note:
Android會(huì)為了適當(dāng)?shù)剡m應(yīng)屏幕自動(dòng)調(diào)整你的布局。所以在你對(duì)應(yīng)于不同屏幕尺寸的布局中,不需要擔(dān)心UI元素的絕對(duì)尺寸,而應(yīng)該關(guān)注影響用戶體驗(yàn)的布局結(jié)構(gòu)(比如一些重要UI元素相對(duì)于其他元素的相對(duì)尺寸和相對(duì)位置)
例如,以下項(xiàng)目包含一個(gè)默認(rèn)布局和一個(gè)對(duì)應(yīng)于大尺寸屏幕上的布局:
MyProject/
res/
layout/
main.xml
layout-large/
main.xml
文件的名字必須完全一致,但是為了為對(duì)應(yīng)尺寸的屏幕提供最優(yōu)化的UI,每個(gè)文件的內(nèi)容是不同的。
而在應(yīng)用中,對(duì)布局文件的引用不需要改變:
@Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); }
系統(tǒng)會(huì)根據(jù)運(yùn)行該應(yīng)用的設(shè)備的屏幕尺寸,從相應(yīng)的目錄下加載布局文件。學(xué)習(xí)Android如何選取恰當(dāng)?shù)馁Y源,可以閱讀: Providing Resources 。
作為另一個(gè)例子,以下是一個(gè)包含了橫屏布局的項(xiàng)目工程的目錄結(jié)構(gòu):
MyProject/
res/
layout/
main.xml
layout-land/
main.xml
默認(rèn)地,文件“ layout/main.xml ”被用于豎屏。
如果你想在大屏幕設(shè)備上提供橫屏布局,你需要同時(shí)用到“ 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及以上版本的系統(tǒng)可以通過一種更高級(jí)的方法來定義屏幕尺寸,這使你可以通過dip(density-independent pixels)來特定資源相對(duì)于屏幕大小的最小寬度和高度。更多信息可以閱讀: Designing for Multiple Screens
?
二). 創(chuàng)建不同的位圖
你應(yīng)該為不同的分辨率密度的屏幕(低,中,高,超高)提供相應(yīng)的資源文件。這可以幫助你在不同的屏幕上,獲取優(yōu)秀的圖像質(zhì)量性能表現(xiàn)。
為了創(chuàng)建這些圖像,你應(yīng)該使用下述的尺寸參數(shù)將原始矢量圖的尺寸進(jìn)行放大或縮?。?
- xhdpi:2.0
- hdpi:1.5
- mdpi:1.0(基準(zhǔn))
- ldpi:0.75
這意味著如果你為一個(gè)xhdpi的設(shè)備生成了一幅200x200的圖像,那么hdpi對(duì)應(yīng)的150x150,mdpi對(duì)應(yīng)的是100x100,ldpi對(duì)應(yīng)的是75x75。
之后把這些文件放在相應(yīng)的圖像資源目錄:
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
一旦你引用了文件:“ @drawable/awesomeimage ”,系統(tǒng)會(huì)根據(jù)屏幕的規(guī)格自動(dòng)地選擇相應(yīng)的圖像文件。
Note:
ldpi的資源并不一定一直是必須的。當(dāng)你提供了hdpi的資源,系統(tǒng)會(huì)將它縮小一半來匹配ldpi的屏幕
有關(guān)創(chuàng)建應(yīng)用圖標(biāo)集的信息,可以閱讀: Iconography design guide
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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