• <del id="qqie6"><sup id="qqie6"></sup></del>
  • <tfoot id="qqie6"></tfoot>
  • <ul id="qqie6"></ul>
  • 產品推薦:水表|流量計|壓力變送器|熱電偶|液位計|冷熱沖擊試驗箱|水質分析|光譜儀|試驗機|試驗箱


    儀表網>技術中心>應用設計>正文

    歡迎聯系我

    有什么可以幫您? 在線咨詢

    Android平臺的多分辨率屏顯設計及其兼容性測試

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

    免責聲明

    • 凡本網注明“來源:儀表網”的所有作品,均為浙江興旺寶明通網絡有限公司-儀表網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:儀表網”。違反上述聲明者,本網將追究其相關法律責任。
    • 本網轉載并注明自其它來源(非儀表網)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。
    • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
    聯系我們

    客服熱線: 15267989561

    加盟熱線: 15267989561

    媒體合作: 0571-87759945

    投訴熱線: 0571-87759942

    關注我們
    • 下載儀表站APP

    • Ybzhan手機版

    • Ybzhan公眾號

    • Ybzhan小程序

    企業未開通此功能
    詳詢客服 : 0571-87759942
    主站蜘蛛池模板: 成人午夜性a一级毛片美女| 色五月婷婷成人网| 精品无码成人网站久久久久久 | 国产成人高清亚洲一区久久| 国产精品成人不卡在线观看| 国产成人小视频| 国产亚洲综合成人91精品| 亚洲国产成人精品久久| 欧美成人另类人妖| 国产成人精品免费视频大全| 亚洲国产成人精品无码一区二区| 久久成人国产精品| 成人女人a毛片在线看| 亚洲第一成人在线| 成人精品免费视频在线观看| 国产成人无码AⅤ片在线观看| 午夜成人在线视频| 在线观看成人免费| 成人综合伊人五月婷久久| 亚洲精品午夜国产va久久成人| 成人欧美1314www色视频| 亚洲国产精品一区二区成人片国内| 成人超污免费网站在线看| 四虎www成人影院| 国产成人精品视频一区二区不卡| 中文字幕欧美成人免费| 国产gav成人免费播放视频| 成人年无码av片在线观看| 91成人免费在线视频| 国产成人三级视频在线观看播放| 日本成人不卡视频| 欧美成人在线视频| 182tv成人午夜在线观看 | 欧美成人猛男性色生活| 成人免费淫片在线费观看| 亚洲精品成人片在线观看精品字幕| 成人精品一区二区激情| 2021国产成人精品国产| 亚洲精品成人a| 国产成人久久精品一区二区三区| 成人黄色在线观看|