本篇文章為大家展示了如何創(chuàng)建支持不同屏幕尺寸的Android應(yīng)用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)祥云,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792
Android用兩種常規(guī)屬性來(lái)分類設(shè)備屏幕:尺寸和像素密度。作為開(kāi)發(fā)者,你應(yīng)當(dāng)預(yù)料到你的android應(yīng)用程序?qū)?huì)被安裝到不同屏幕尺寸和像素密度的設(shè)備上。因此,你的應(yīng)用應(yīng)當(dāng)包含可選的資源來(lái)優(yōu)化應(yīng)用外觀,以便支持上述不同尺寸和像素密度的設(shè)備。
* 有四種廣義的尺寸:small, normal, large, xlarge。
* 同樣也有四種廣義的像素密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。
為了聲明用于不同屏幕的不同layouts布局和bitmaps資源,你必須把這些可選的資源文件分別放在不同的目錄,這一點(diǎn)類似于你在國(guó)際化時(shí)不同語(yǔ)言strings的操作。
同時(shí)要注意屏幕的方向(landscape or portrait)也被認(rèn)為是一種屏幕尺寸的變化,所以大多數(shù)應(yīng)用都應(yīng)該修改layout布局來(lái)提高用戶在不同屏幕方向上的體驗(yàn)。
為了提高在不同設(shè)備屏幕上的用戶體驗(yàn),你應(yīng)當(dāng)為每一種你想要支持的屏幕尺寸創(chuàng)建一個(gè)獨(dú)有的XML布局文件。每一布局文件應(yīng)當(dāng)存放到恰當(dāng)?shù)馁Y源目錄下,該目錄以屏幕尺寸-作為后綴。例如,一個(gè)用于大屏幕的布局文件應(yīng)當(dāng)放在res/layout-large/目錄下面。
注:Android會(huì)自動(dòng)縮放你的布局以便適配屏幕。這樣,用于不同屏幕的布局文件就不必過(guò)多考慮UI元素的絕對(duì)大小,相反應(yīng)當(dāng)關(guān)注于布局的結(jié)構(gòu),這將直接影響用戶體驗(yàn)(比如重要view視圖的大小或位置應(yīng)當(dāng)相對(duì)于同級(jí)view視圖)。
例如,下面的項(xiàng)目包含了一個(gè)默認(rèn)的layout和一個(gè)可選的用于大屏幕的layout目錄:
MyProject/ res/ layout/ main.xml layout-large/ main.xml
目錄中的布局文件名必須保持一致,但是它們的內(nèi)容可以不同,以便提供優(yōu)化的UI來(lái)支持相對(duì)應(yīng)的屏幕尺寸。
像往常一樣在app中簡(jiǎn)單地獲得layout布局文件的引用:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }
Android系統(tǒng)將根據(jù)你的app應(yīng)用所運(yùn)行設(shè)備的屏幕尺寸從適當(dāng)?shù)膌ayout目錄加載布局文件。更多關(guān)于Android系統(tǒng)如何選擇適當(dāng)?shù)馁Y源文件可以在 Providing Resources | 資源提供 - Providing Resources 指導(dǎo)中獲取。
下面是另外一個(gè)案例,在這個(gè)項(xiàng)目中使用了可選的橫向布局來(lái)支持橫向屏幕:
MyProject/ res/ layout/ main.xml layout-land/ main.xml
缺省情況下,layout/main.xml文件是垂直方向布局的。
如果你想提供一個(gè)特殊的橫向布局,比如支持大屏幕,你需要同時(shí)使用large和land來(lái)修飾。
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
注:*Android 3.2 及以上版本支持一種更好的方法來(lái)定義屏幕尺寸,它允許我們?cè)谂c密度無(wú)關(guān)的像素情況下通過(guò)最小寬度和高度來(lái)為不同屏幕指定資源在。本章節(jié)中我們沒(méi)有涉及該新特性。如果想獲得更多相關(guān)信息,請(qǐng)閱讀Designing for Multiple Screens | 多屏幕適配設(shè)計(jì) - Designing for Multiple Screens
你應(yīng)當(dāng)為所有廣義像素密度中的每一種都提供已經(jīng)縮放好的適當(dāng)?shù)腷itmap資源:低low, 中medium, 高h(yuǎn)igh以及特高extra-high像素密度。這將使你的應(yīng)用在所有分辨率的設(shè)備上都獲得優(yōu)良的圖形質(zhì)量和呈現(xiàn)效果。
為了生成這些圖片資源,你應(yīng)當(dāng)以矢量圖的格式來(lái)制作原始圖片資源,然后根據(jù)下面的縮放尺寸生成每一種分辨率的圖片:
特高分辨率xhdpi: 2.0
高分辨率hdpi: 1.5
中分辨率mdpi: 1.0 (基準(zhǔn))
低分辨率ldpi: 0.75
這意味著如果你要為特高分辨率設(shè)備生成一張200x200的圖片,那么你需要為高分辨率設(shè)備生成150x150,中分辨率設(shè)備生成100x100,低分辨率設(shè)備生成
75x75的圖片。
然后把這些文件放置到恰當(dāng)?shù)馁Y源目錄:
MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png drawable-ldpi/ awesomeimage.png
以后在你引用@drawable/awesomeimage時(shí),系統(tǒng)將根據(jù)設(shè)備的分辨率自動(dòng)選擇適當(dāng)?shù)膱D片資源。
注:低分辨率(ldpi)的資源并不總是必需的。當(dāng)你提供高分辨率資源時(shí),系統(tǒng)將把它們對(duì)半縮放來(lái)適配低分辨率設(shè)備。
獲取更多關(guān)于創(chuàng)建應(yīng)用圖標(biāo)的技巧和設(shè)計(jì)指導(dǎo),可以查看Iconography design guide|圖標(biāo)設(shè)計(jì)指南-Iconography design guide。
上述內(nèi)容就是如何創(chuàng)建支持不同屏幕尺寸的Android應(yīng)用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。