国产精品成人网站,日韩视频二区,亚洲成人手机电影,怡红院国产

產(chǎn)品推薦:水表|流量計(jì)|壓力變送器|熱電偶|液位計(jì)|冷熱沖擊試驗(yàn)箱|水質(zhì)分析|光譜儀|試驗(yàn)機(jī)|試驗(yàn)箱


儀表網(wǎng)>技術(shù)中心>應(yīng)用設(shè)計(jì)>正文

歡迎聯(lián)系我

有什么可以幫您? 在線咨詢(xún)

Android平臺(tái)的多分辨率屏顯設(shè)計(jì)及其兼容性測(cè)試

   2012年05月08日 16:28  
  摘要:本文首先介紹Android平臺(tái)的系統(tǒng)架構(gòu)及資源管理方法,之后介紹目前在處理多分辨率時(shí)采用的方法,而后重點(diǎn)分析Android平臺(tái)資源加載機(jī)制并且結(jié)合實(shí)例給出多分辨率的處理步驟及技巧,zui后介紹測(cè)試多分辨率效果的方法。
  
  引言
  
  2007年11月,Google公司發(fā)布基于Linux2.6內(nèi)核的移動(dòng)終端操作系統(tǒng)-Android,由于其開(kāi)源性,得到很多手機(jī)廠商的追捧和應(yīng)用的青睞。近年來(lái)智能手機(jī)發(fā)展迅速,運(yùn)行速度、存儲(chǔ)容量和可靠性等指標(biāo)有了顯著提高[1],當(dāng)今的智能手機(jī)用戶(hù)對(duì)應(yīng)用軟件的舒適性和美觀性有了更大的期望,應(yīng)用程序界面友好性已經(jīng)越來(lái)越重要。但是由于Android的開(kāi)源性,硬件廠商屏幕分辨率不統(tǒng)一,據(jù)統(tǒng)計(jì)目前市場(chǎng)上Android系統(tǒng)手機(jī)的分辨率有10余種,分辨率分布如此廣泛使得在處理多分辨率適應(yīng)方面遇到了不少難題。文章首先介紹Android平臺(tái)的系統(tǒng)架構(gòu)及資源管理方法,之后介紹目前在處理多分辨率時(shí)采用的方法,而后重點(diǎn)分析Android平臺(tái)資源加載機(jī)制并且結(jié)合實(shí)例給出多分辨率的處理步驟及技巧,zui后介紹測(cè)試多分辨率效果的方法。
  
  1、Android平臺(tái)簡(jiǎn)介
  
  Android是一個(gè)包括操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用的移動(dòng)設(shè)備軟件堆[2],Android系統(tǒng)和其他系統(tǒng)一樣,采用分層的架構(gòu)。由下至上依此為L(zhǎng)inux操作系統(tǒng)和驅(qū)動(dòng)、程序庫(kù)及Android運(yùn)行時(shí)環(huán)境、應(yīng)用程序框架層、應(yīng)用層。Android應(yīng)用程序的基本組件有Activity、Intent、BroadcaSTReceiver、Service四種,各個(gè)組件的配置信息以及權(quán)限管理、版本管理等配置信息都保存在AndroidManifest.xml中。
  
  1.1Android應(yīng)用程序資源管理
  
  手機(jī)界面上加載的圖片是Android資源的一種,除此之外還有XML資源(anim.xmllayout.xml等)以及原數(shù)據(jù)文件(音視頻文件等)[3].新建一個(gè)HelloAndroid的Android應(yīng)用程序,默認(rèn)生成的文件架構(gòu)包含src,gen,assets,res等文件夾,以及AndroidManifest.xml配置文件。src文件夾中保存的是Android源代碼,res文件夾代表應(yīng)用程序需要使用到的資源文件,gen包中包含R.java文件。Res文件夾中包含的所有資源文件都對(duì)應(yīng)在R.java中。
  
  當(dāng)在res/目錄中任何一個(gè)子目錄中添加相應(yīng)類(lèi)型的文件之后,ADT會(huì)在R.java文件中相應(yīng)的匿名內(nèi)部類(lèi)中國(guó)自動(dòng)生成一條靜態(tài)int類(lèi)型的常量,對(duì)添加的文件進(jìn)行索引。
  
  Android系統(tǒng)采取這種架構(gòu)使視圖等資源文件與控制代碼分離,實(shí)現(xiàn)松耦合。然而可以使用R.java文件在代碼中對(duì)相應(yīng)的資源文件進(jìn)行存取,靈活操作。
  
  1.2一般多分辨率處理方法及其缺點(diǎn)
  
  1.2.1圖片縮放
  
  基于當(dāng)前屏幕的精度,平臺(tái)自動(dòng)加載任何未經(jīng)縮放的限定尺寸和精度的圖片。如果圖片不匹配,平臺(tái)會(huì)加載默認(rèn)資源并且在放大或者縮小之后可以滿(mǎn)足當(dāng)前界面的顯示要求。例如,當(dāng)前為高精度屏幕,平臺(tái)會(huì)加載高精度資源(如HelloAndroid中drawable-hdpi中的位圖資源),如果沒(méi)有,平臺(tái)會(huì)將中精度資源縮放至高精度,導(dǎo)致圖片顯示不清晰。
  
  1.2.2自動(dòng)定義像素尺寸和位置
  
  如果程序不支持多種精度屏幕,平臺(tái)會(huì)自動(dòng)定義像素位置和尺寸值等,這樣就能保證元素能和精度160的屏幕上一樣能顯示出同樣尺寸的效果。例如,要讓W(xué)VGA高精度屏幕和傳統(tǒng)的HVGA屏幕一樣顯示同樣尺寸的圖片,當(dāng)程序不支持時(shí),系統(tǒng)會(huì)對(duì)程序慌稱(chēng)屏幕分辨率為320×480,在(10,10)到(100,100)的區(qū)域內(nèi)繪制圖形完成之后,系統(tǒng)會(huì)將圖形放大到(15,15)到(150,150)的屏幕顯示區(qū)域。
  
  1.2.3兼容更大尺寸的屏幕
  
  當(dāng)前屏幕超過(guò)程序所支持屏幕的上*,定義supportsscreens元素,這樣超出顯示的基準(zhǔn)線時(shí),平臺(tái)在此顯示黑色的背景圖。例如,WVGA中精度屏幕上,如程序不支持這樣的大屏幕,系統(tǒng)會(huì)謊稱(chēng)是一個(gè)320×480的,多余的顯示區(qū)域會(huì)被填充成黑色。
  
  1.2.4采用OpenGL動(dòng)態(tài)繪制圖片
  
  Android底層提供了OpenGL的接口和方法,可以動(dòng)態(tài)繪制圖片,但是這種方式對(duì)不熟悉計(jì)算機(jī)圖形學(xué)的來(lái)講是一個(gè)很大的挑戰(zhàn)。一般開(kāi)發(fā)游戲,采用OpenGL方式。
  
  1.2.5多個(gè)apk文件
  
  Symbian和傳統(tǒng)的J2ME就是采用這種方式,為一款應(yīng)用提供多個(gè)分辨率版本,用戶(hù)根據(jù)自己的需求下載安裝相應(yīng)的可執(zhí)行文件。針對(duì)每一種屏幕單獨(dú)開(kāi)發(fā)應(yīng)用程序不失為一種好方法,但是目前GoogleMarket對(duì)一個(gè)應(yīng)用程序多個(gè)分辨率版本的支持還不完善,還是需要盡可能使用一個(gè)apk文件適應(yīng)多個(gè)分辨率。
  
  2、多分辨率處理方案詳解
  
  2.1基本術(shù)語(yǔ)介紹
  
  2.1.1屏幕尺寸
  
  真正的物理尺寸,屏幕對(duì)角線的長(zhǎng)度,單位是英寸。為了簡(jiǎn)化起見(jiàn),Android把支持的所有物理尺寸分成了4組:small,normal,large,extralarge.
  
  2.1.2屏幕密度Density
  
  一定物理范圍的像素的個(gè)數(shù),單位通常是dpi(dotsperinch),即每英寸的點(diǎn)數(shù)。例如一個(gè)低分辨率屏幕相對(duì)于高分辨率屏幕在一定的物理區(qū)域內(nèi)包含的像素點(diǎn)要少。為了簡(jiǎn)化起見(jiàn),Android將所有的屏幕密度分成四組:low,medium,high和extrahigh.
  
  2.1.3方向Orientation
  
  從用戶(hù)視角來(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,extralarge;按照屏幕密度分為四組low,medium,high和extrahigh,其分界線如圖1所示。
  
  圖1Android中的屏幕分類(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.3Android支持多分辨率原理及步驟
  
  由以上分析,默認(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)資源名稱(chēng),例如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.
  
  2.4界面設(shè)計(jì)技巧
  
  前面的部分已經(jīng)詳細(xì)講解了如何架構(gòu)應(yīng)用程序使其更好地適應(yīng)多種分辨率屏幕,此外,在界面設(shè)計(jì)和控制中我們還應(yīng)該掌握一些原則或者技巧,從而使應(yīng)用程序界面友好、適應(yīng)性強(qiáng)。
  
  1)在XMLlayout文件中定義長(zhǎng)度的時(shí)候,使用wrap_content,fill_parent,或者dp進(jìn)行描述,這樣可以保證在屏幕上面展示的時(shí)候有合適的大小。例如,一個(gè)viewlayout_width="100dip",在HVGA@160density的設(shè)備上顯示100個(gè)px,而在WVGA@240density的設(shè)備上顯示150個(gè)px,但是所占的物理尺寸時(shí)相同的。
  
  2)在Activity或者其他控制視圖加載的代碼處,不要使用像素單位的硬編碼。
  
  3)不要使用Absoluayout.布局是由AndroidUItoolkit提供的布局容器中的一種。但是與其他layout不一樣的是,Absoluayout使用固定的位置表示,使得在不同的屏幕上面顯示效果不好,因此Absoluayout在sdk1.6及以后的版本中被棄用了。
  
  4)為不同屏幕密度的手機(jī),提供不同的位圖資源,可以使得界面清晰無(wú)縮放。
  
  3、多分辨率兼容性測(cè)試方案
  
  在產(chǎn)品發(fā)行之前,要在所有的目標(biāo)手機(jī)上進(jìn)行全面的測(cè)試。AndroidSDK包含了一套測(cè)試多分辨率的機(jī)制。可以自己定制avd作為應(yīng)用程序的測(cè)試環(huán)境,avd會(huì)模擬真實(shí)機(jī)器的屏幕大小和密度。例如圖2為模擬器的列表,可以將程序運(yùn)行在這四個(gè)模擬器中進(jìn)行多分辨率的測(cè)試。
  
  圖2虛擬機(jī)列表
  
  4、結(jié)論
  
  本文介紹Android平臺(tái)的體系架構(gòu)和分辨率相關(guān)的術(shù)語(yǔ),詳細(xì)論述資源加載原理和多分辨率處理的詳細(xì)流程,zui后給出了測(cè)試應(yīng)用程序是否適應(yīng)多種分辨率的方法。結(jié)合本人實(shí)踐經(jīng)驗(yàn)進(jìn)行講述,內(nèi)容深入淺出,較完整地論述了如何使應(yīng)用程序盡可能多地適應(yīng)多種分辨率屏幕。

免責(zé)聲明

  • 凡本網(wǎng)注明“來(lái)源:儀表網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-儀表網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來(lái)源:儀表網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
  • 本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源(非儀表網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
  • 如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
聯(lián)系我們

客服熱線: 15267989561

加盟熱線: 15267989561

媒體合作: 0571-87759945

投訴熱線: 0571-87759942

關(guān)注我們
  • 下載儀表站APP

  • Ybzhan手機(jī)版

  • Ybzhan公眾號(hào)

  • Ybzhan小程序

企業(yè)未開(kāi)通此功能
詳詢(xún)客服 : 0571-87759942