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