一種應(yīng)用軟件用戶界面與顯示設(shè)備的適配方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用軟件用戶界面與顯示設(shè)備的適配方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的發(fā)展,以及智能手機(jī)的普及,各種移動(dòng)互聯(lián)網(wǎng)應(yīng)用軟件應(yīng)運(yùn)而生,使人們的生活異常便利并豐富多彩。然而手機(jī)廠商也百家齊放,各種品牌的手機(jī)眼花繚亂。由于各個(gè)手機(jī)廠商的生產(chǎn)標(biāo)準(zhǔn)不同,手機(jī)的屏幕大小、屏幕分辨率各不相同。這給應(yīng)用軟件的開(kāi)發(fā)者帶來(lái)了極大的不便,開(kāi)發(fā)一款應(yīng)用軟件,需要考慮到在不同手機(jī)上呈現(xiàn)的效果。手機(jī)的屏幕分辨率、屏幕像素密度,是直接影響顯示效果的兩大重要因素。
[0003]開(kāi)發(fā)者在設(shè)計(jì)UI效果圖時(shí),除了會(huì)給出整體的效果圖外,還會(huì)在效果圖上給出標(biāo)注,表明一個(gè)UI布局的大小,以及前后左右的距離空隙,這個(gè)大小和空隙都是用像素px (pixel)進(jìn)行標(biāo)注。例如某個(gè)UI布局的固定像素寬度為ΙΟΟρχ,那么在任何大小的屏幕上,顯示的寬度都是ΙΟΟρχ。這樣在大屏幕的手機(jī)上,該UI看起來(lái)就會(huì)相對(duì)顯示的較小。
[0004]為了使得一個(gè)UI在不同大小的手機(jī)屏幕上等比例顯示,現(xiàn)有技術(shù)更推薦使用設(shè)備獨(dú)立像素 dip (device independent pixel)來(lái)代替 px 作為單位,dip = (dpi/160) *px,其中像素密度dpi (dots per inch)是指在水平或垂直方向上每英寸距離具有的像素?cái)?shù)量??梢?jiàn)如果設(shè)置UI的寬度是100dip,那在根據(jù)dip和px的轉(zhuǎn)換公式,在160dpi設(shè)備上顯示的是100px,在240dpi設(shè)備上顯示的是150px,從而UI在不同顯示屏幕上得到了等比例的放大。
[0005]然而采用dip來(lái)替代,開(kāi)發(fā)人員需要額外進(jìn)行一次單位換算。即使如此,對(duì)于屏幕尺寸相同、像素密度不同的設(shè)備,顯示效果卻是不一樣的。比如,1280*800、dpi為240的手機(jī),某個(gè)UI布局寬度為100dip,轉(zhuǎn)換成像素為150px ;那在1280*800、dpi為160的設(shè)備上,這個(gè)UI布局的寬度應(yīng)該為150dip,才能使得像素值為150px。所以為了解決這樣的問(wèn)題,開(kāi)發(fā)人員就會(huì)為這種情況新增配置文件。當(dāng)配置文件增多以后,出現(xiàn)修改某個(gè)顯示問(wèn)題的時(shí)候,往往要同步修改對(duì)應(yīng)的多只配置文件
[0006]所以開(kāi)發(fā)人員在開(kāi)發(fā)應(yīng)用軟件時(shí),經(jīng)常需要耗費(fèi)很多精力時(shí)間來(lái)解決屏幕適配問(wèn)題。經(jīng)常需要各種分辨率的手機(jī),來(lái)試運(yùn)行應(yīng)用軟件,來(lái)檢測(cè)是否達(dá)到預(yù)期效果;并且使用配置文件的方式,不能一次性解決所有的問(wèn)題,只能發(fā)現(xiàn)多少解決多少,未來(lái)市場(chǎng)上有可能還會(huì)出現(xiàn)各種不同屏幕規(guī)格的手機(jī),使得開(kāi)發(fā)的應(yīng)用軟件適配存在潛在的隱患。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的是提供一種應(yīng)用軟件用戶界面與顯示設(shè)備的適配方法,以解決上述【背景技術(shù)】中提到的技術(shù)問(wèn)題,能夠解決在所有手機(jī)上的適配問(wèn)題。
[0008]為了實(shí)現(xiàn)上述目的,本發(fā)明技術(shù)方案如下:
[0009]—種應(yīng)用軟件用戶界面與顯示設(shè)備的適配方法,所述方法包括:
[0010]根據(jù)預(yù)設(shè)的基準(zhǔn)分辨率設(shè)計(jì)用戶界面中視圖的尺寸,采用像素px進(jìn)行標(biāo)注;
[0011]應(yīng)用軟件啟動(dòng)時(shí),計(jì)算運(yùn)行該應(yīng)用軟件的當(dāng)前設(shè)備的分辨率與預(yù)設(shè)的基準(zhǔn)分辨率的比值;
[0012]根據(jù)計(jì)算得到的比值,對(duì)用戶界面中視圖進(jìn)行等比例縮放,按照等比例縮放后的視圖進(jìn)行顯示。
[0013]本發(fā)明的一種實(shí)現(xiàn)方式,所述對(duì)用戶界面中視圖進(jìn)行等比例縮放,包括步驟:
[0014]逐個(gè)提取用戶界面中各個(gè)視圖;
[0015]分別根據(jù)提取的視圖的尺寸,用計(jì)算得到的比值進(jìn)行等比例縮放。
[0016]本發(fā)明的另一種實(shí)現(xiàn)方式,所述方法包括還包括步驟:
[0017]將用戶界面的頂層視圖作為總的視圖,其他視圖作為該總的視圖的子視圖封裝為一個(gè)總的視圖;
[0018]則所述對(duì)用戶界面中視圖進(jìn)行等比例縮放,包括步驟:
[0019]提取所述總的視圖;
[0020]遍歷總的視圖及其子視圖的尺寸,用計(jì)算得到的比值進(jìn)行等比例縮放。
[0021]后一種方法將子視圖封裝在頂層視圖中成為一個(gè)總的視圖,在縮放時(shí),只需要傳入封裝的總的視圖,開(kāi)發(fā)者不需要關(guān)心有多少個(gè)視圖需要縮放,更加簡(jiǎn)單。
[0022]其中所述用戶界面中視圖的尺寸包括視圖寬度、視圖高度、視圖內(nèi)邊距、視圖外邊距。
[0023]進(jìn)一步地,所述計(jì)算運(yùn)行該應(yīng)用軟件的當(dāng)前設(shè)備的分辨率與預(yù)設(shè)的基準(zhǔn)分辨率的比值,計(jì)算公式如下:
[0024]寬度比值=當(dāng)前設(shè)備分辨率寬度/基準(zhǔn)分辨率寬度;
[0025]高度比值=當(dāng)前設(shè)備分辨率高度/基準(zhǔn)分辨率高度。
[0026]進(jìn)一步地,所述根據(jù)計(jì)算得到的比值,對(duì)用戶界面中視圖進(jìn)行等比例縮放,計(jì)算公式如下:
[0027]縮放后視圖寬度=縮放前視圖寬度*寬度比值;
[0028]縮放后視圖高度=縮放前視圖高度*高度比值。
[0029]進(jìn)一步地,所述視圖內(nèi)邊距、視圖外邊距分別包括左、右、上、下四個(gè)屬性,對(duì)于左、右屬性,其對(duì)應(yīng)于視圖的寬度方向,分別對(duì)左、右屬性通過(guò)寬度比值進(jìn)行等比例縮放;而對(duì)于上、下屬性,其對(duì)應(yīng)于視圖的高度方向,分別對(duì)上、下屬性通過(guò)高度比值進(jìn)行等比例縮放。
[0030]本發(fā)明提出的一種應(yīng)用軟件用戶界面與顯示設(shè)備的適配方法,利用像素px作為單位,基于基準(zhǔn)分辨率對(duì)視圖尺寸進(jìn)行標(biāo)注,在程序啟動(dòng)時(shí),通過(guò)當(dāng)前設(shè)備屏幕分辨率與基準(zhǔn)分辨率的比值實(shí)現(xiàn)指定視圖的整體等比例縮放。本發(fā)明的方法降低了用戶界面適配的復(fù)雜度,幫助開(kāi)發(fā)人員省去大量的單位轉(zhuǎn)換過(guò)程、針對(duì)不同機(jī)型的文件配置以及測(cè)試過(guò)程,大大節(jié)省了開(kāi)發(fā)的時(shí)間。同時(shí)對(duì)于市面上新出現(xiàn)的設(shè)備,即使其分辨率不同、屏幕密度不同,也同樣能夠正常進(jìn)行適配,適配性好。
【附圖說(shuō)明】
[0031]圖1為本發(fā)明適配方法的流程圖。
【具體實(shí)施方式】
[0032]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明技術(shù)方案做進(jìn)一步詳細(xì)說(shuō)明,以下實(shí)施例不構(gòu)成對(duì)本發(fā)明的限定。
[0033]如圖1所示,本實(shí)施例一種應(yīng)用軟件用戶界面與顯示設(shè)備的適配方法,包括:
[0034]步驟S1、根據(jù)預(yù)設(shè)的基準(zhǔn)分辨率設(shè)計(jì)用戶界面中視圖的尺寸,采用像素px進(jìn)行標(biāo)注。
[0035]開(kāi)發(fā)人員首先選擇一個(gè)目標(biāo)設(shè)備,可以是市場(chǎng)上最流行的機(jī)型,例如其分辨率為1280*720的設(shè)備,將該設(shè)備的分辨率作為預(yù)設(shè)的基準(zhǔn)分辨率。
[0036]從而根據(jù)預(yù)設(shè)的基準(zhǔn)分辨率為基準(zhǔn)來(lái)設(shè)計(jì)應(yīng)用軟件用戶界面效果圖,并直接用px來(lái)標(biāo)注用戶界面中各視圖的尺寸,本實(shí)施例中稱為像素尺寸,不需要進(jìn)行換算。用戶界面中視圖有文字視圖(Text View)、圖片視圖(Image View)等,它們都是基于View實(shí)現(xiàn)的。
[0037]在實(shí)際的開(kāi)發(fā)中,用戶界面中各視圖在layout布局文件中,應(yīng)用軟件啟動(dòng)后,可以將layout布局文件轉(zhuǎn)化成視圖View圖層呈現(xiàn)出來(lái)。開(kāi)發(fā)人員將各視圖的像素尺寸直接填入到View視圖的屬性中,View視圖的屬性包括視圖寬度(width)、視圖高度(height)、視圖內(nèi)邊距(padding)、視圖外邊距(margin)。
[0038]其中:width在layout中可以通過(guò)設(shè)置view的android: layout_width屬性來(lái)定義;height在layout中可以通過(guò)設(shè)置view的android: layout_heigh