資料介紹
2007 年11 月,Google 公司發(fā)布基于Linux2.6 內(nèi)核的移動終端操作系統(tǒng)- Android, 由于其開源性, 得到很多手機廠商的追捧和應(yīng)用開發(fā)者的青睞。近年來智能手機發(fā)展迅速,運行速度、存儲容量和可靠性等指標有了顯著提高[1],當今的智能手機用戶對應(yīng)用軟件的舒適性和美觀性有了更大的期望,應(yīng)用程序界面友好性已經(jīng)越來越重要。但是由于Android 的開源性,硬件廠商屏幕分辨率不統(tǒng)一,據(jù)統(tǒng)計目前市場上Android系統(tǒng)手機的分辨率有10 余種,分辨率分布如此廣泛使得開發(fā)者在處理多分辨率適應(yīng)方面遇到了不少難題。文章首先介紹Android 平臺的系統(tǒng)架構(gòu)及資源管理方法,之后介紹目前開發(fā)者在處理多分辨率時采用的方法,而后重點分析Android 平臺資源加載機制并且結(jié)合實例給出多分辨率的處理步驟及技巧,最后介紹測試多分辨率效果的方法。
1 Android 平臺簡介
Android 是一個包括操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用的移動設(shè)備軟件堆[2],Android 系統(tǒng)和其他系統(tǒng)一樣,采用分層的架構(gòu)。由下至上依此為Linux 操作系統(tǒng)和驅(qū)動、程序庫及Android 運行時環(huán)境、應(yīng)用程序框架層、應(yīng)用層。 Android 應(yīng)用程序的基本組件有Activity、Intent、BroadcaSTReceiver、Service 四種,各個組件的配置信息以及權(quán)限管理、版本管理等配置信息都保存在AndroidManifest.xml 中。
1.1 Android 應(yīng)用程序資源管理
手機界面上加載的圖片是Android 資源的一種,除此之外還有XML 資源(anim.xml layout.xml 等) 以及原數(shù)據(jù)文件( 音視頻文件等)[3]。新建一個HelloAndroid 的Android 應(yīng)用程序,默認生成的文件架構(gòu)包含src,gen,assets,res 等文件夾,以及AndroidManifest.xml 配置文件。src 文件夾中保存的是Android 源代碼,res 文件夾代表應(yīng)用程序需要使用到的資源文件,gen 包中包含R.java 文件。Res 文件夾中包含的所有資源文件都對應(yīng)在R.java 中。
當開發(fā)者在res/ 目錄中任何一個子目錄中添加相應(yīng)類型的文件之后,ADT 會在R.java 文件中相應(yīng)的匿名內(nèi)部類中國自動生成一條靜態(tài)int 類型的常量,對添加的文件進行索引。
Android 系統(tǒng)采取這種架構(gòu)使視圖等資源文件與控制代碼分離,實現(xiàn)松耦合。然而可以使用R.java 文件在代碼中對相應(yīng)的資源文件進行存取,靈活操作。
1.2 一般多分辨率處理方法及其缺點
1.2.1 圖片縮放
基于當前屏幕的精度,平臺自動加載任何未經(jīng)縮放的限定尺寸和精度的圖片。如果圖片不匹配,平臺會加載默認資源并且在放大或者縮小之后可以滿足當前界面的顯示要求。例如,當前為高精度屏幕,平臺會加載高精度資源(如HelloAndroid中drawable-hdpi 中的位圖資源),如果沒有,平臺會將中精度資源縮放至高精度,導(dǎo)致圖片顯示不清晰。
1.2.2 自動定義像素尺寸和位置
如果程序不支持多種精度屏幕,平臺會自動定義像素絕對位置和尺寸值等,這樣就能保證元素能和精度160 的屏幕上一樣能顯示出同樣尺寸的效果。例如,要讓W(xué)VGA 高精度屏幕和傳統(tǒng)的HVGA 屏幕一樣顯示同樣尺寸的圖片,當程序不支持時,系統(tǒng)會對程序慌稱屏幕分辨率為320×480,在(10,10)到(100,100)的區(qū)域內(nèi)繪制圖形完成之后,系統(tǒng)會將圖形放大到(15,15)到(150,150)的屏幕顯示區(qū)域。
1.2.3 兼容更大尺寸的屏幕
當前屏幕超過程序所支持屏幕的上限時,定義supportsscreens元素,這樣超出顯示的基準線時,平臺在此顯示黑色的背景圖。例如,WVGA 中精度屏幕上,如程序不支持這樣的大屏幕,系統(tǒng)會謊稱是一個320×480 的,多余的顯示區(qū)域會被填充成黑色。
1.2.4 采用OpenGL 動態(tài)繪制圖片
Android 底層提供了OpenGL 的接口和方法,可以動態(tài)繪制圖片,但是這種方式對不熟悉計算機圖形學(xué)的開發(fā)者來講是一個很大的挑戰(zhàn)。一般開發(fā)游戲,采用OpenGL 方式。
1.2.5 多個apk 文件
Symbian 和傳統(tǒng)的J2ME 就是采用這種方式,為一款應(yīng)用提供多個分辨率版本,用戶根據(jù)自己的需求下載安裝相應(yīng)的可執(zhí)行文件。針對每一種屏幕單獨開發(fā)應(yīng)用程序不失為一種好方法,但是目前Google Market 對一個應(yīng)用程序多個分辨率版本的支持還不完善,開發(fā)者還是需要盡可能使用一個apk 文件適應(yīng)多個分辨率。
2 多分辨率處理方案詳解
2.1 基本術(shù)語介紹
2.1.1 屏幕尺寸
真正的物理尺寸,屏幕對角線的長度,單位是英寸。為了簡化起見,Android 把支持的所有物理尺寸分成了4 組:small,normal, large, extra large.
2.1.2 屏幕密度Density
一定物理范圍的像素的個數(shù),單位通常是dpi(dots perinch), 即每英寸的點數(shù)。例如一個低分辨率屏幕相對于高分辨率屏幕在一定的物理區(qū)域內(nèi)包含的像素點要少。為了簡化起見,Android 將所有的屏幕密度分成四組:low, medium,high 和extra high.
2.1.3 方向Orientation
從用戶視角來看的屏幕的方向,Portrait 縱向和Landscape 橫向。
2.1.4 分辨率Resolution
屏幕上所有的像素點數(shù)目,一般用480*800 的形式來表示。密度無關(guān)像素dp: Android 平臺中虛擬的像素單位,定義成一種密度無關(guān)的形式,像素px 和dp 的轉(zhuǎn)換公式為 px =dp*(dpi/160)。在界面開發(fā)中應(yīng)使用dp 作為像素單位,從而保證在不同的屏幕密度上控件所占的實際px 因密度而自動調(diào)整。
2.2 手機屏幕的分類
Android 采用兩種標準對屏幕進行分類。按照屏幕尺寸分為四組small, normal, large, extra large;按照屏幕密度分為四組 low, medium ,high 和extra high,其分界線如圖1所示。
圖1 Android 中的屏幕分類
為了優(yōu)化程序UI,讓其適應(yīng)多種分辨率并能清晰顯示,一般情況下需要為不同屏幕大小密度提供不同的圖片文件和對應(yīng)的布局文件,在運行的時候,Android 系統(tǒng)會根據(jù)當前設(shè)備的屏幕大小及密度等信息,選擇加載其中一套匹配的資源加以運行,從而達到適應(yīng)多分辨率的效果。
1 Android 平臺簡介
Android 是一個包括操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用的移動設(shè)備軟件堆[2],Android 系統(tǒng)和其他系統(tǒng)一樣,采用分層的架構(gòu)。由下至上依此為Linux 操作系統(tǒng)和驅(qū)動、程序庫及Android 運行時環(huán)境、應(yīng)用程序框架層、應(yīng)用層。 Android 應(yīng)用程序的基本組件有Activity、Intent、BroadcaSTReceiver、Service 四種,各個組件的配置信息以及權(quán)限管理、版本管理等配置信息都保存在AndroidManifest.xml 中。
1.1 Android 應(yīng)用程序資源管理
手機界面上加載的圖片是Android 資源的一種,除此之外還有XML 資源(anim.xml layout.xml 等) 以及原數(shù)據(jù)文件( 音視頻文件等)[3]。新建一個HelloAndroid 的Android 應(yīng)用程序,默認生成的文件架構(gòu)包含src,gen,assets,res 等文件夾,以及AndroidManifest.xml 配置文件。src 文件夾中保存的是Android 源代碼,res 文件夾代表應(yīng)用程序需要使用到的資源文件,gen 包中包含R.java 文件。Res 文件夾中包含的所有資源文件都對應(yīng)在R.java 中。
當開發(fā)者在res/ 目錄中任何一個子目錄中添加相應(yīng)類型的文件之后,ADT 會在R.java 文件中相應(yīng)的匿名內(nèi)部類中國自動生成一條靜態(tài)int 類型的常量,對添加的文件進行索引。
Android 系統(tǒng)采取這種架構(gòu)使視圖等資源文件與控制代碼分離,實現(xiàn)松耦合。然而可以使用R.java 文件在代碼中對相應(yīng)的資源文件進行存取,靈活操作。
1.2 一般多分辨率處理方法及其缺點
1.2.1 圖片縮放
基于當前屏幕的精度,平臺自動加載任何未經(jīng)縮放的限定尺寸和精度的圖片。如果圖片不匹配,平臺會加載默認資源并且在放大或者縮小之后可以滿足當前界面的顯示要求。例如,當前為高精度屏幕,平臺會加載高精度資源(如HelloAndroid中drawable-hdpi 中的位圖資源),如果沒有,平臺會將中精度資源縮放至高精度,導(dǎo)致圖片顯示不清晰。
1.2.2 自動定義像素尺寸和位置
如果程序不支持多種精度屏幕,平臺會自動定義像素絕對位置和尺寸值等,這樣就能保證元素能和精度160 的屏幕上一樣能顯示出同樣尺寸的效果。例如,要讓W(xué)VGA 高精度屏幕和傳統(tǒng)的HVGA 屏幕一樣顯示同樣尺寸的圖片,當程序不支持時,系統(tǒng)會對程序慌稱屏幕分辨率為320×480,在(10,10)到(100,100)的區(qū)域內(nèi)繪制圖形完成之后,系統(tǒng)會將圖形放大到(15,15)到(150,150)的屏幕顯示區(qū)域。
1.2.3 兼容更大尺寸的屏幕
當前屏幕超過程序所支持屏幕的上限時,定義supportsscreens元素,這樣超出顯示的基準線時,平臺在此顯示黑色的背景圖。例如,WVGA 中精度屏幕上,如程序不支持這樣的大屏幕,系統(tǒng)會謊稱是一個320×480 的,多余的顯示區(qū)域會被填充成黑色。
1.2.4 采用OpenGL 動態(tài)繪制圖片
Android 底層提供了OpenGL 的接口和方法,可以動態(tài)繪制圖片,但是這種方式對不熟悉計算機圖形學(xué)的開發(fā)者來講是一個很大的挑戰(zhàn)。一般開發(fā)游戲,采用OpenGL 方式。
1.2.5 多個apk 文件
Symbian 和傳統(tǒng)的J2ME 就是采用這種方式,為一款應(yīng)用提供多個分辨率版本,用戶根據(jù)自己的需求下載安裝相應(yīng)的可執(zhí)行文件。針對每一種屏幕單獨開發(fā)應(yīng)用程序不失為一種好方法,但是目前Google Market 對一個應(yīng)用程序多個分辨率版本的支持還不完善,開發(fā)者還是需要盡可能使用一個apk 文件適應(yīng)多個分辨率。
2 多分辨率處理方案詳解
2.1 基本術(shù)語介紹
2.1.1 屏幕尺寸
真正的物理尺寸,屏幕對角線的長度,單位是英寸。為了簡化起見,Android 把支持的所有物理尺寸分成了4 組:small,normal, large, extra large.
2.1.2 屏幕密度Density
一定物理范圍的像素的個數(shù),單位通常是dpi(dots perinch), 即每英寸的點數(shù)。例如一個低分辨率屏幕相對于高分辨率屏幕在一定的物理區(qū)域內(nèi)包含的像素點要少。為了簡化起見,Android 將所有的屏幕密度分成四組:low, medium,high 和extra high.
2.1.3 方向Orientation
從用戶視角來看的屏幕的方向,Portrait 縱向和Landscape 橫向。
2.1.4 分辨率Resolution
屏幕上所有的像素點數(shù)目,一般用480*800 的形式來表示。密度無關(guān)像素dp: Android 平臺中虛擬的像素單位,定義成一種密度無關(guān)的形式,像素px 和dp 的轉(zhuǎn)換公式為 px =dp*(dpi/160)。在界面開發(fā)中應(yīng)使用dp 作為像素單位,從而保證在不同的屏幕密度上控件所占的實際px 因密度而自動調(diào)整。
2.2 手機屏幕的分類
Android 采用兩種標準對屏幕進行分類。按照屏幕尺寸分為四組small, normal, large, extra large;按照屏幕密度分為四組 low, medium ,high 和extra high,其分界線如圖1所示。
圖1 Android 中的屏幕分類
為了優(yōu)化程序UI,讓其適應(yīng)多種分辨率并能清晰顯示,一般情況下需要為不同屏幕大小密度提供不同的圖片文件和對應(yīng)的布局文件,在運行的時候,Android 系統(tǒng)會根據(jù)當前設(shè)備的屏幕大小及密度等信息,選擇加載其中一套匹配的資源加以運行,從而達到適應(yīng)多分辨率的效果。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 高頻電路原理與分析電子版資源下載 0次下載
- FPGA和Atom混合的可配置平臺資料下載
- 將藍牙m(xù)esh作為智能照明平臺資料下載
- PLC實例講解之加法指令寫流水燈資源下載 10次下載
- FPGA的硬件電路設(shè)計教程和FPGA平臺資料簡介 163次下載
- Android開發(fā)實例免費下載 0次下載
- 一種無線供電的可編程設(shè)計超高頻射頻識別系統(tǒng)的傳感平臺資料下載 3次下載
- 私有云平臺資源監(jiān)控與優(yōu)化系統(tǒng) 3次下載
- 基于Android安全總結(jié)與分析 3次下載
- 用戶友好的Android隱私監(jiān)管機制 0次下載
- Android惡意軟件判定方法 0次下載
- DSP通過FLASH并行加載的分析和實例 7次下載
- 深入剖析Android消息機制 11次下載
- 大華視頻監(jiān)控綜合平臺一體機開發(fā)平臺資料 25次下載
- 基于Android的跨平臺資源管理系統(tǒng)的研究 16次下載
- 【AWTK使用經(jīng)驗】加載和釋放外部圖片 294次閱讀
- Android安全機制介紹及實踐 825次閱讀
- 類隔離實現(xiàn)之自定義類加載器的擴展 487次閱讀
- 什么是SPI機制 910次閱讀
- Android異常日志快速定位分析小技巧 2360次閱讀
- AN-2058: ADuCM355用戶引導(dǎo)加載程序 803次閱讀
- Linux內(nèi)核的安全性對Android的影響 1109次閱讀
- 基于ARM-Linux平臺的FPGA程序加載模式淺析 1074次閱讀
- 什么是沙箱機制 1.1w次閱讀
- Android 異步通信原理機制-- handler 1947次閱讀
- Android內(nèi)存管理機制與分析工具 4446次閱讀
- Linux系統(tǒng)的fork運行機制分析 1108次閱讀
- 用實例深入闡述雙端口分析和回歸比分析 6039次閱讀
- 衛(wèi)星頻率及軌道資源管理分析 1w次閱讀
- 基于Android平臺的雙網(wǎng)雙待的設(shè)計方法 2785次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多