基于Android平臺(tái)的多分辨率解決方案
2 多分辨率處理方案詳解
2.1 基本術(shù)語(yǔ)介紹
2.1.1 屏幕尺寸
真正的物理尺寸,屏幕對(duì)角線的長(zhǎng)度,單位是英寸。為了簡(jiǎn)化起見(jiàn),Android 把支持的所有物理尺寸分成了4 組:small,normal, large, extra large.
2.1.2 屏幕密度Density
一定物理范圍的像素的個(gè)數(shù),單位通常是dpi(dots perinch), 即每英寸的點(diǎn)數(shù)。例如一個(gè)低分辨率屏幕相對(duì)于高分辨率屏幕在一定的物理區(qū)域內(nèi)包含的像素點(diǎn)要少。為了簡(jiǎn)化起見(jiàn),Android 將所有的屏幕密度分成四組:low, medium,high 和extra high.
2.1.3 方向Orientation
從用戶視角來(lái)看的屏幕的方向,Portrait 縱向和Landscape 橫向。
2.1.4 分辨率Resolution
屏幕上所有的像素點(diǎn)數(shù)目,一般用480*800 的形式來(lái)表示。密度無(wú)關(guān)像素dp: Android 平臺(tái)中虛擬的像素單位,定義成一種密度無(wú)關(guān)的形式,像素px 和dp 的轉(zhuǎn)換公式為 px =dp*(dpi/160)。在界面開(kāi)發(fā)中應(yīng)使用dp 作為像素單位,從而保證在不同的屏幕密度上控件所占的實(shí)際px 因密度而自動(dòng)調(diào)整。
2.2 手機(jī)屏幕的分類(lèi)
Android 采用兩種標(biāo)準(zhǔn)對(duì)屏幕進(jìn)行分類(lèi)。按照屏幕尺寸分為四組small, normal, large, extra large;按照屏幕密度分為四組 low, medium ,high 和extra high,其分界線如圖1所示。
圖1 Android 中的屏幕分類(lèi)
為了優(yōu)化程序UI,讓其適應(yīng)多種分辨率并能清晰顯示,一般情況下需要為不同屏幕大小密度提供不同的圖片文件和對(duì)應(yīng)的布局文件,在運(yùn)行的時(shí)候,Android 系統(tǒng)會(huì)根據(jù)當(dāng)前設(shè)備的屏幕大小及密度等信息,選擇加載其中一套匹配的資源加以運(yùn)行,從而達(dá)到適應(yīng)多分辨率的效果。
2.3 Android 支持多分辨率原理及步驟
由以上分析,默認(rèn)的加載方式都不能很好地適應(yīng)不同的分辨率,Android 從1.6 開(kāi)始支持多種分辨率的處理,原理簡(jiǎn)而言之就是根據(jù)屏幕參數(shù),動(dòng)態(tài)加載資源文件。在Android 項(xiàng)目文件結(jié)構(gòu)中,drawable 文件夾下包含三個(gè)子文件夾,分別為drawable-hdpi, drawable-mdpi, drawable-ldpi, 分別存放hdpi,mdpi,ldip 的位圖。應(yīng)用程序運(yùn)行時(shí),Android 系統(tǒng)會(huì)根據(jù)當(dāng)前設(shè)備的屏幕大小、分辨率、屏幕密度、方向、長(zhǎng)寬比等信息,選擇相應(yīng)文件夾進(jìn)行加載。Android 配置修飾符的定義規(guī)則如下:
1)在res 文件夾下新建目錄,命名為resources_name>-qualifier> 這種格式,其中resources_name> 為標(biāo)準(zhǔn)資源名稱,例如drawable 或者layout;qualifier> 即修飾符,指定對(duì)應(yīng)的屏幕參數(shù),比如normal/small/large,hdpi/mdpi/ldpi,land/port,long/notlong 等。
2)在步驟1 新建的文件夾中存入相應(yīng)的資源,比如位圖資源或者layout 資源,資源文件的名字必須與默認(rèn)資源文件的名字相同。例如:
3)Android 系統(tǒng)支持多分辨率的機(jī)制離不開(kāi)Android-Manifest.xml 文件的supports-screen 元素,若應(yīng)用程序要適應(yīng)多種分辨率,需要將anyDensity 設(shè)置為true.
評(píng)論