摘 要
以傳統(tǒng)的方式分別實(shí)現(xiàn)Android平板和手機(jī)的布局,不僅需要兩套設(shè)計(jì)方案,而且維護(hù)困難,管理不便。針對(duì)上述問題,本文提出統(tǒng)一布局在平板和手機(jī)上的實(shí)現(xiàn),使用一套設(shè)計(jì)方案,即可達(dá)到手機(jī)和平板自適應(yīng)顯示的最佳效果。
【關(guān)鍵詞】統(tǒng)一布局 Andriod 平板 設(shè)備獨(dú)立像素
至Google 2008年推出Android系統(tǒng)以來,出現(xiàn)了三種不同層次的場(chǎng)景。首先安卓版本已經(jīng)多至16個(gè)版本甚至以上,再者各廠商推出不同分辨率的手機(jī),除了主流的720p、1080p分辨率之外,還有各種虛擬按鍵引起分辨率的差異。加之主流的Android設(shè)備尺寸也有4.7寸、5寸、5.5寸、6寸、7寸、8寸以及10寸等,如此復(fù)雜的場(chǎng)景,導(dǎo)致Android系統(tǒng)碎片化嚴(yán)重,如何只研發(fā)一個(gè)app使用同一種布局(通常需要支持平板和手機(jī)兩種設(shè)備),就可以支持如此復(fù)雜的場(chǎng)景?
1 設(shè)計(jì)方案
設(shè)備獨(dú)立像素(又稱設(shè)備無關(guān)像素 Device Independent Pixels 、密度獨(dú)立性 Density Independent或設(shè)備獨(dú)立像素,簡稱DIP或DP)是一種物理測(cè)量單位,基于計(jì)算機(jī)控制的坐標(biāo)系統(tǒng)和抽象像素(虛擬像素),由底層系統(tǒng)的程序使用,轉(zhuǎn)換為物理像素的應(yīng)用。Google推薦使用設(shè)備獨(dú)立像素適配不同密度的手機(jī),這種方案能夠解決同尺寸大小、不同分辨率的手機(jī)的適配問題,保證在同尺寸的手機(jī)上可以顯示相同的寬高。但是對(duì)于相同的分辨率、不同尺寸(差異較大的尺寸)的適配的效果很差。舉個(gè)例子,在8寸平板上滿屏顯示的圖片按照dp方案顯示在手機(jī)上,手機(jī)上只能顯示67%左右,為什么會(huì)有這種差異?我們假設(shè)手機(jī)和平板都是720p的分辨率,尺寸分別為5寸和8寸,平板是滿屏顯示,因此高度為720px,平板的密度為1.33125,換算成dp的話是541dp,而手機(jī)的密度為2,因此手機(jī)上像素應(yīng)該為1082px,而手機(jī)最大像素也是720px,因此只能顯示67%左右。
本文旨在設(shè)計(jì)一套布局方案,用于支持Android3.2以上版本,同時(shí)支持5寸以上手機(jī)及7寸以上平板,分辨率支持720p、1080p等。為了解決這個(gè)問題,Google推薦針對(duì)手機(jī)和平板采用不同的布局,如QQ、樂商店等都分別開發(fā)的手機(jī)版本和pad版本。由于需要開發(fā)不同版本,開發(fā)成本也成倍提高。
本文采用一種比較簡潔的方法,通過統(tǒng)一布局,使8寸平板上的圖片在5寸手機(jī)上顯示,也能夠保持較好的用戶體驗(yàn)(可以將8寸平板截圖,圖片放在5寸Android手機(jī)上用圖庫打開觀看效果)。
統(tǒng)一布局方案主要根據(jù)Android設(shè)備的最小dp值,區(qū)分平板和手機(jī),設(shè)置不同的寬、高和字體大小。
如表1所示,先查看一組數(shù)據(jù)(橫向代表屏幕尺寸,因?yàn)橄嗤直媛氏鲁叽缭酱?,最小dp值越大,因此不列舉9寸和10寸的值,縱向代表分辨率,數(shù)值代表設(shè)備最小的dp值):
最小dp值計(jì)算(按照1280x720 5寸計(jì)算):
(1)根據(jù)寬和高計(jì)算出對(duì)角線的值,對(duì)角線值為1468.6;
(2)根據(jù)屏幕尺寸計(jì)算出屏幕像素密度,1468.6 / 5 = 293.72;
(3)廠商根據(jù)屏幕像素密度設(shè)置符合的dp值,該值為320;
(4)算出最小dp值,720 / (320 / 160) = 360。
通過表1數(shù)據(jù)可以看出,主流手機(jī)在5~6寸的最小dp值為360,而平板的最小dp值為7寸平板1440x900,最小值為450,因此可以設(shè)置臨界值為450,用來區(qū)分手機(jī)和平板。
在原有的布局文件中,設(shè)置view的寬和高使用dp值,新的方案分別在values文件夾下創(chuàng)建dimens.xml,values-sw450dp(Google在3.2以上版本提供了最小寬度sw方案)文件夾下創(chuàng)建dimens.xml。設(shè)值view的寬和高為dimens.xml文件下定義的值,平板使用values-sw450dp文件夾下的dimens文件,而手機(jī)使用values下的文件。
針對(duì)方案分析中提出的問題,采用等比例縮小策略,在8寸平板上顯示是720px,同樣在5寸手機(jī)上顯示也設(shè)置為720px,此時(shí)手機(jī)設(shè)置的dp值為360。以聯(lián)想平板為參考(1280x800,213dp),可以計(jì)算出該手機(jī)需要的dp值。公式為:
Y = x * 1.33125 / 2;
其中x為平板的dp值,y為手機(jī)的dp值。得出的dp值同樣適用于類似尺寸的手機(jī)。
2 結(jié)束語
本文提出的統(tǒng)一布局思想解決了適用于3.2以上安卓系統(tǒng)版本、不同分辨率以及不同尺寸手機(jī)和平板的適配問題,采用一套布局, 維護(hù)方便,一套代碼,節(jié)省維護(hù)成本,大大節(jié)省了UI/UE和開發(fā)工作量。但是作者在實(shí)際過程中遇到了一些小問題,諸如按鈕過小,可能影響用戶在手機(jī)上的適配體驗(yàn),故作者也在此提醒研發(fā)人員布局最好不要過密,根據(jù)手機(jī)的尺寸合理地設(shè)置布局,以期達(dá)到更好的用戶體驗(yàn)。
參考文獻(xiàn)
[1]李剛.瘋狂Android講義[M].電子工業(yè)出版社,2015.
[2]蔣先濤,王曉峰.基于高通平臺(tái)的觸摸屏和虛擬按鍵設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012(06):251-253+ 257.
[3]Rogers R,Meike B,Mednieks Z.Android 應(yīng)用開發(fā)[M].北京:人民郵電出版社,2010.
[4]https://baike.baidu.com/item/DIP/443947?fr=aladdin.
作者簡介
姚鳳(1988-),女,江蘇省南京市人。助理實(shí)驗(yàn)師。碩士研究生。主要研究方向?yàn)榍度胧较到y(tǒng)。
作者單位
南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院 江蘇省南京市 210023endprint