Android平臺的多分辨率屏顯設(shè)計(jì)及其兼容性測試
2007 年11 月,Google 公司發(fā)布基于Linux2.6 內(nèi)核的移動終端操作系統(tǒng)- Android, 由于其開源性,得到很多手機(jī)廠商的追捧和應(yīng)用開發(fā)者的青睞。近年來智能手機(jī)發(fā)展迅速,運(yùn)行速度、存儲容量和可靠性等指標(biāo)有了顯著提高[1],當(dāng)今的智能手機(jī)用戶對應(yīng)用軟件的舒適性和美觀性有了更大的期望,應(yīng)用程序界面友好性已經(jīng)越來越重要。但是由于Android 的開源性,硬件廠商屏幕分辨率不統(tǒng)一,據(jù)統(tǒng)計(jì)目前市場上Android系統(tǒng)手機(jī)的分辨率有10 余種,分辨率分布如此廣泛使得開發(fā)者在處理多分辨率適應(yīng)方面遇到了不少難題。文章首先介紹Android 平臺的系統(tǒng)架構(gòu)及資源管理方法,之后介紹目前開發(fā)者在處理多分辨率時采用的方法,而后重點(diǎn)分析Android 平臺資源加載機(jī)制并且結(jié)合實(shí)例給出多分辨率的處理步驟及技巧,最后介紹測試多分辨率效果的方法。
1 Android 平臺簡介
Android 是一個包括操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用的移動設(shè)備軟件堆[2],Android 系統(tǒng)和其他系統(tǒng)一樣,采用分層的架構(gòu)。由下至上依此為Linux 操作系統(tǒng)和驅(qū)動、程序庫及Android 運(yùn)行時環(huán)境、應(yīng)用程序框架層、應(yīng)用層。 Android 應(yīng)用程序的基本組件有Activity、Intent、BroadcaSTReceiver、Service 四種,各個組件的配置信息以及權(quán)限管理、版本管理等配置信息都保存在AndroidManifest.xml 中。
1.1 Android 應(yīng)用程序資源管理
手機(jī)界面上加載的圖片是Android 資源的一種,除此之外還有XML 資源(anim.xml layout.xml 等)以及原數(shù)據(jù)文件( 音視頻文件等)[3].新建一個HelloAndroid 的Android 應(yīng)用程序,默認(rèn)生成的文件架構(gòu)包含src,gen,assets,res 等文件夾,以及AndroidManifest.xml 配置文件。src 文件夾中保存的是Android 源代碼,res 文件夾代表應(yīng)用程序需要使用到的資源文件,gen 包中包含R.java 文件。Res 文件夾中包含的所有資源文件都對應(yīng)在R.java 中。
當(dāng)開發(fā)者在res/ 目錄中任何一個子目錄中添加相應(yīng)類型的文件之后,ADT 會在R.java 文件中相應(yīng)的匿名內(nèi)部類中國自動生成一條靜態(tài)int 類型的常量,對添加的文件進(jìn)行索引。
Android 系統(tǒng)采取這種架構(gòu)使視圖等資源文件與控制代碼分離,實(shí)現(xiàn)松耦合。然而可以使用R.java 文件在代碼中對相應(yīng)的資源文件進(jìn)行存取,靈活操作。
1.2 一般多分辨率處理方法及其缺點(diǎn)
1.2.1 圖片縮放
基于當(dāng)前屏幕的精度,平臺自動加載任何未經(jīng)縮放的限定尺寸和精度的圖片。如果圖片不匹配,平臺會加載默認(rèn)資源并且在放大或者縮小之后可以滿足當(dāng)前界面的顯示要求。例如,當(dāng)前為高精度屏幕,平臺會加載高精度資源(如HelloAndroid中drawable-hdpi 中的位圖資源),如果沒有,平臺會將中精度資源縮放至高精度,導(dǎo)致圖片顯示不清晰。
1.2.2 自動定義像素尺寸和位置
如果程序不支持多種精度屏幕,平臺會自動定義像素絕對位置和尺寸值等,這樣就能保證元素能和精度160 的屏幕上一樣能顯示出同樣尺寸的效果。例如,要讓W(xué)VGA 高精度屏幕和傳統(tǒng)的HVGA 屏幕一樣顯示同樣尺寸的圖片,當(dāng)程序不支持時,系統(tǒng)會對程序慌稱屏幕分辨率為320×480,在(10,10)到(100,100)的區(qū)域內(nèi)繪制圖形完成之后,系統(tǒng)會將圖形放大到(15,15)到(150,150)的屏幕顯示區(qū)域。
1.2.3 兼容更大尺寸的屏幕
當(dāng)前屏幕超過程序所支持屏幕的上限時,定義supportsscreens元素,這樣超出顯示的基準(zhǔn)線時,平臺在此顯示黑色的背景圖。例如,WVGA 中精度屏幕上,如程序不支持這樣的大屏幕,系統(tǒng)會謊稱是一個320×480 的,多余的顯示區(qū)域會被填充成黑色。
1.2.4 采用OpenGL 動態(tài)繪制圖片
Android 底層提供了OpenGL 的接口和方法,可以動態(tài)繪制圖片,但是這種方式對不熟悉計(jì)算機(jī)圖形學(xué)的開發(fā)者來講是一個很大的挑戰(zhàn)。一般開發(fā)游戲,采用OpenGL 方式。
評論