本發(fā)明涉及游戲的ui界面制作,特別是一種ui控件自適配的方法及其系統(tǒng)。
背景技術(shù):
1、ui控件(user?interface?control)是指用戶界面領(lǐng)域中的可視化控件,它是gui程序設(shè)計(jì)中最核心也是最基礎(chǔ)的元素。ui控件主要用來改善并加強(qiáng)應(yīng)用程序的用戶體驗(yàn),使你的應(yīng)用程序更易于使用,提供更多的交互性,使你的應(yīng)用程序在看上去更加像現(xiàn)實(shí)世界的應(yīng)用程序。
2、ui控件主要用于觸摸屏、鍵盤和鼠標(biāo)輸入的配置和顯示gui中的元素。它們可以構(gòu)建并布置android界面,提供用戶界面的可視化元素,使用戶能夠更容易理解和操作應(yīng)用程序。ui控件包括文本框,按鈕,網(wǎng)格視圖,滑動(dòng)條,列表視圖,圖表,菜單,對(duì)話框等。
3、在游戲開發(fā)中,經(jīng)常需要對(duì)每一個(gè)ui預(yù)制體的每一個(gè)ui控件設(shè)置自適配方式,這樣游戲在不同的分辨率的設(shè)備上運(yùn)行可以保持正確的ui界面排版,通常針對(duì)每一個(gè)ui控件都需要人力設(shè)置自適配方式影響游戲開發(fā)效率。
技術(shù)實(shí)現(xiàn)思路
1、為克服上述問題,本發(fā)明的目的是提供一種ui控件自適配的方法,本發(fā)明基于ui控件類型、大小、位置關(guān)系、父子關(guān)系自動(dòng)設(shè)置ui控件的自適應(yīng)方式,節(jié)省工時(shí)加快了項(xiàng)目進(jìn)度。
2、本發(fā)明采用以下方案實(shí)現(xiàn):一種ui控件自適配的方法,所述方法包括如下步驟:
3、步驟s1、獲取ui控件的世界坐標(biāo)中心點(diǎn)相對(duì)ui界面的中心點(diǎn)位置關(guān)系;
4、步驟s2、獲取ui控件相對(duì)ui界面的大??;
5、步驟s3、對(duì)于有父ui控件的子ui控件,讀取父控件的自適應(yīng)方式作為子ui控件設(shè)置自適應(yīng)的依據(jù);
6、步驟s4、對(duì)于超出屏幕大小的ui控件,根據(jù)橫向或者豎向是否超出設(shè)置自適應(yīng)方式調(diào)整;
7、步驟s5、根據(jù)ui控件相對(duì)ui界面的中心點(diǎn)位置、大小設(shè)置ui控件的自適應(yīng)方式調(diào)整。
8、進(jìn)一步的,所述自適應(yīng)方式調(diào)整采用aspect?ratio?filter腳本實(shí)現(xiàn),該aspectratio?filter腳本控制ui控件自身布局元素的大小,能調(diào)整高度以適合寬度,會(huì)根據(jù)比例縮放ui控件大小以適應(yīng)ui界面的布局。
9、進(jìn)一步的,所述步驟s1進(jìn)一步具體為:獲取ui控件的世界坐標(biāo)中心并對(duì)比ui界面中心的位置關(guān)系,即ui控件的世界坐標(biāo)x軸減去ui界面中心的世界坐標(biāo)x軸為xoffest,ui控件的世界坐標(biāo)y軸減去ui界面中心的世界坐標(biāo)y軸為yoffset,如果xoffset和yoffset都為0,則中心對(duì)齊,xoffset和yoffset都大于0那么ui控件在ui界面的右上角,xoffset和yoffset都小于0那么ui控件在ui界面的左下角,xoffset大于0且yoffset小于0那么ui控件在ui界面的右下角,xoffset小于0且yoffset大于0那么ui控件在ui界面的左上角,xoffset或者yoffset其中一個(gè)等于0另外一個(gè)不為0,就是位于ui界面上下左右方向。
10、進(jìn)一步的,所述步驟s2進(jìn)一步具體為:獲取ui控件相對(duì)ui界面的橫向和縱向的大小,如果ui控件橫向大小和ui界面的橫向大小相同,那么該ui控件的橫向設(shè)置為橫向匹配ui界面的自適應(yīng)方式調(diào)整,如果ui控件縱向大小和ui界面的縱向大小相同,那么該ui控件的縱向設(shè)置為匹配ui界面的自適應(yīng)方式調(diào)整。
11、進(jìn)一步的,所述步驟s3進(jìn)一步具體為:獲取子ui控件的世界坐標(biāo)中心并對(duì)比父ui控件中心的位置關(guān)系,即子ui控件的世界坐標(biāo)x軸減去父ui控件中心的世界坐標(biāo)x軸為xoffest,子ui控件的世界坐標(biāo)y軸減去父ui控件中心的世界坐標(biāo)y軸為yoffset,如果xoffset和yoffset都為0,則中心對(duì)齊,xoffset和yoffset都大于0那么子ui控件在父ui控件的右上角,xoffset和yoffset都小于0那么子ui控件在父ui控件的左下角,xoffset大于0且yoffset小于0那么子ui控件在父ui控件的右下角,xoffset小于0且yoffset大于0那么子ui控件在父ui控件的左上角,xoffset或者yoffset其中一個(gè)等于0另外一個(gè)不為0,就是位于父ui控件上下左右方向;獲取子ui控件相對(duì)父ui控件的橫向和縱向的大小,如果子ui控件橫向大小和父ui控件的橫向大小相同,那么該子ui控件的橫向設(shè)置為橫向匹配父ui控件的自適應(yīng)方式調(diào)整,如果子ui控件縱向大小和父ui控件的縱向大小相同,那么該子ui控件的縱向設(shè)置為匹配父ui控件的自適應(yīng)方式調(diào)整。
12、進(jìn)一步的,所述步驟s4進(jìn)一步具體為:對(duì)于超出屏幕大小的ui控件,如果是橫向超出設(shè)置為:固定縱向大小為屏幕縱向大小的數(shù)值并拉伸橫向的類型,該類型為橫向拖動(dòng);如果是縱向超出設(shè)置為:固定橫向大小為屏幕橫向大小的數(shù)值并拉伸縱向的類型,該類型為縱向拖動(dòng);如果ui控件橫向和縱向都超出屏幕大小,那么該ui控件設(shè)置固定ui原有大小類型,該類型為橫向和縱向拖動(dòng)。
13、進(jìn)一步的,所述步驟s5進(jìn)一步具體為:判斷步驟1中ui控件相對(duì)ui界面的位置和步驟2中ui控件相對(duì)于ui界面的大小關(guān)系,如果存在步驟2設(shè)置橫向或者縱向適配ui界面大小的情況先設(shè)置橫向或者縱向適配ui界面,另外一個(gè)方向根據(jù)步驟1的位置關(guān)系設(shè)為上下左右對(duì)齊;如果不存在步驟2的情況根據(jù)步驟1中ui控件中心相對(duì)ui界面中心的位置關(guān)系,設(shè)置左上、左下、左、上、下、右、右上、右下對(duì)齊方式。
14、本發(fā)明還提供了一種ui控件自適配的系統(tǒng),所述系統(tǒng)包括:位置關(guān)系獲取模塊、大小獲取模塊、子ui控件處理模塊、超屏處理模塊、ui控件處理模塊;
15、所述位置關(guān)系獲取模塊,獲取ui控件的世界坐標(biāo)中心點(diǎn)相對(duì)ui界面的中心點(diǎn)位置關(guān)系;
16、所述大小獲取模塊,獲取ui控件相對(duì)ui界面的大??;
17、所述子ui控件處理模塊,對(duì)于有父ui控件的子ui控件,讀取父控件的自適應(yīng)方式作為子ui控件設(shè)置自適應(yīng)的依據(jù);
18、所述超屏處理模塊,對(duì)于超出屏幕大小的ui控件,根據(jù)橫向或者豎向是否超出設(shè)置自適應(yīng)方式調(diào)整;
19、所述ui控件處理模塊,根據(jù)ui控件相對(duì)ui界面的中心點(diǎn)位置、大小設(shè)置ui控件的自適應(yīng)方式調(diào)整。
20、進(jìn)一步的,所述自適應(yīng)方式調(diào)整采用aspect?ratio?filter腳本實(shí)現(xiàn),該aspectratio?filter腳本控制ui控件自身布局元素的大小,能調(diào)整高度以適合寬度,會(huì)根據(jù)比例縮放ui控件大小以適應(yīng)ui界面的布局。
21、進(jìn)一步的,所述位置關(guān)系獲取模塊進(jìn)一步具體為:獲取ui控件的世界坐標(biāo)中心并對(duì)比ui界面中心的位置關(guān)系,即ui控件的世界坐標(biāo)x軸減去ui界面中心的世界坐標(biāo)x軸為xoffest,ui控件的世界坐標(biāo)y軸減去ui界面中心的世界坐標(biāo)y軸為yoffset,如果xoffset和yoffset都為0,則中心對(duì)齊,xoffset和yoffset都大于0那么ui控件在ui界面的右上角,xoffset和yoffset都小于0那么ui控件在ui界面的左下角,xoffset大于0且yoffset小于0那么ui控件在ui界面的右下角,xoffset小于0且yoffset大于0那么ui控件在ui界面的左上角,xoffset或者yoffset其中一個(gè)等于0另外一個(gè)不為0,就是位于ui界面上下左右方向。
22、進(jìn)一步的,所述大小獲取模塊進(jìn)一步具體為:獲取ui控件相對(duì)ui界面的橫向和縱向的大小,如果ui控件橫向大小和ui界面的橫向大小相同,那么該ui控件的橫向設(shè)置為橫向匹配ui界面的自適應(yīng)方式調(diào)整,如果ui控件縱向大小和ui界面的縱向大小相同,那么該ui控件的縱向設(shè)置為匹配ui界面的自適應(yīng)方式調(diào)整。
23、進(jìn)一步的,所述子ui控件處理模塊進(jìn)一步具體為:獲取子ui控件的世界坐標(biāo)中心并對(duì)比父ui控件中心的位置關(guān)系,即子ui控件的世界坐標(biāo)x軸減去父ui控件中心的世界坐標(biāo)x軸為xoffest,子ui控件的世界坐標(biāo)y軸減去父ui控件中心的世界坐標(biāo)y軸為yoffset,如果xoffset和yoffset都為0,則中心對(duì)齊,xoffset和yoffset都大于0那么子ui控件在父ui控件的右上角,xoffset和yoffset都小于0那么子ui控件在父ui控件的左下角,xoffset大于0且yoffset小于0那么子ui控件在父ui控件的右下角,xoffset小于0且yoffset大于0那么子ui控件在父ui控件的左上角,xoffset或者yoffset其中一個(gè)等于0另外一個(gè)不為0,就是位于父ui控件上下左右方向;獲取子ui控件相對(duì)父ui控件的橫向和縱向的大小,如果子ui控件橫向大小和父ui控件的橫向大小相同,那么該子ui控件的橫向設(shè)置為橫向匹配父ui控件的自適應(yīng)方式調(diào)整,如果子ui控件縱向大小和父ui控件的縱向大小相同,那么該子ui控件的縱向設(shè)置為匹配父ui控件的自適應(yīng)方式調(diào)整。
24、進(jìn)一步的,所述超屏處理模塊進(jìn)一步具體為:對(duì)于超出屏幕大小的ui控件,如果是橫向超出設(shè)置為:固定縱向大小為屏幕縱向大小的數(shù)值并拉伸橫向的類型,該類型為橫向拖動(dòng);如果是縱向超出設(shè)置為:固定橫向大小為屏幕橫向大小的數(shù)值并拉伸縱向的類型,該類型為縱向拖動(dòng);如果ui控件橫向和縱向都超出屏幕大小,那么該ui控件設(shè)置固定ui原有大小類型,該類型為橫向和縱向拖動(dòng)。
25、進(jìn)一步的,所述ui控件處理模塊進(jìn)一步具體為:判斷位置關(guān)系獲取模塊中ui控件相對(duì)ui界面的位置和大小獲取模塊中ui控件相對(duì)于ui界面的大小關(guān)系,如果存在大小獲取模塊設(shè)置橫向或者縱向適配ui界面大小的情況先設(shè)置橫向或者縱向適配ui界面,另外一個(gè)方向根據(jù)位置關(guān)系獲取模塊的位置關(guān)系設(shè)為上下左右對(duì)齊;如果不存在大小獲取模塊的情況根據(jù)位置關(guān)系獲取模塊中ui控件中心相對(duì)ui界面中心的位置關(guān)系,設(shè)置左上、左下、左、上、下、右、右上、右下對(duì)齊方式。
26、本發(fā)明的有益效果在于:現(xiàn)有的游戲開發(fā)中ui開發(fā)的工作量比較大,涉及的ui控件量非常多,如果人力每個(gè)ui控件設(shè)置其自適應(yīng)方式需要耗費(fèi)大量的人工工時(shí),本發(fā)明基于ui控件類型、大小、位置關(guān)系、父子關(guān)系自動(dòng)設(shè)置ui控件的自適應(yīng)方式,節(jié)省工時(shí)加快了項(xiàng)目進(jìn)度,并且自動(dòng)設(shè)置是基于機(jī)器計(jì)算來設(shè)置自適應(yīng)方式,減少了出錯(cuò)的概率。