本發(fā)明屬于圖形界面繪制技術(shù)領(lǐng)域,尤其涉及一種界面繪制方法、移動終端及計(jì)算機(jī)可讀存儲介質(zhì)。
背景技術(shù):
隨著移動通信及計(jì)算機(jī)技術(shù)的發(fā)展,智能手機(jī)、平板電腦等移動終端的普及率越來越高,其功能也越來越強(qiáng)大。為幫助用戶便捷地使用各項(xiàng)功能,移動終端需要根據(jù)各項(xiàng)功能的實(shí)際使用情況,繪制對應(yīng)的ui(userinterface,用戶界面)。以計(jì)算器功能為例,計(jì)算器的ui通常包括兩部分:底部的鍵盤與上方用于顯示通過鍵盤輸入的字符以及計(jì)算結(jié)果的顯示區(qū)域。其中鍵盤由固定的圖片組成,顯示區(qū)域的高度也是根據(jù)不同分辨率固定的,這樣在橫、豎屏切換顯示時無法兼顧分屏顯示的情況,因此無法動態(tài)適配屏幕的高度和寬度,也就無法根據(jù)當(dāng)前屏幕的顯示模式繪制出適配的計(jì)算器鍵盤界面。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種界面繪制方法、移動終端及計(jì)算機(jī)可讀存儲介質(zhì),可以解決現(xiàn)有的計(jì)算器鍵盤界面繪制技術(shù)無法在橫、豎屏切換顯示時兼顧分屏顯示的情況,動態(tài)適配屏幕的高度和寬度,繪制出適配的界面的技術(shù)問題。
本發(fā)明實(shí)施例第一方面提供了一種界面繪制方法,包括:當(dāng)界面布局的尺寸發(fā)生變化時,獲取所述界面所在的屏幕的尺寸;根據(jù)所述屏幕的尺寸,確定所述界面中待繪制子界面的布局類型,所述布局類型為橫屏界面或豎屏界面;根據(jù)所述屏幕的類型、尺寸以及所述布局類型,確定所述待繪制子界面的尺寸;根據(jù)所述布局類型及所述待繪制子界面的尺寸,繪制所述待繪制子界面。
本發(fā)明實(shí)施例第二方面提供了一種移動終端,包括:尺寸獲取模塊,用于當(dāng)界面布局的尺寸發(fā)生變化時,獲取所述界面所在的屏幕的尺寸;布局類型確定模塊,用于根據(jù)所述屏幕的尺寸,確定所述界面中待繪制子界面的布局類型,所述布局類型為橫屏界面或豎屏界面;尺寸確定模塊,用于根據(jù)所述屏幕的類型、尺寸以及所述布局類型,確定所述待繪制子界面的尺寸;繪制模塊,用于根據(jù)所述布局類型及所述待繪制子界面的尺寸,繪制所述待繪制子界面。
本發(fā)明實(shí)施例第三方面提供了一種移動終端,包括:存儲器,處理器及存儲在存儲器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時實(shí)現(xiàn)上述本發(fā)明實(shí)施例第一方面提供的界面繪制方法。
本發(fā)明實(shí)施例第四方面提供了一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)上述本發(fā)明實(shí)施例第一方面提供的界面繪制方法。
上述本發(fā)明實(shí)施例提供的界面繪制方法、移動終端及計(jì)算機(jī)可讀存儲介質(zhì),通過當(dāng)界面布局的尺寸發(fā)生變化發(fā)生改變時,根據(jù)該界面所在屏幕的尺寸,確定該界面中待繪制子界面的布局類型,并根據(jù)該屏幕的類型、尺寸以及該布局類型,確定該待繪制子界面的尺寸,根據(jù)該布局類型及該待繪制子界面的尺寸,繪制該待繪制子界面。由于是在界面布局尺寸的變化時,動態(tài)調(diào)整待繪制子界面的尺寸,而界面布局尺寸的變化涵蓋了橫、豎屏切換變化及分屏屏幕尺寸變化等多種情況,因此可在橫、豎屏切換顯示時兼顧不同的屏幕類型,如分屏屏幕或非分屏屏幕,動態(tài)適配屏幕的高度和寬度,從而繪制出較為適配的界面,提高了界面繪制的靈活性。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例。
圖1是本發(fā)明實(shí)施例提供的界面繪制方法的實(shí)現(xiàn)流程示意圖;
圖2a~2d是本發(fā)明實(shí)施例提供的界面繪制方法中四種不同模式下屏幕顯示方式的示意圖;
圖3是本發(fā)明實(shí)施例提供的界面繪制方法的實(shí)現(xiàn)流程示意圖;
圖4是本發(fā)明實(shí)施例提供的移動終端的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實(shí)施例提供的移動終端的結(jié)構(gòu)示意圖;
圖6示出了一種移動終端的硬件結(jié)構(gòu)圖。
具體實(shí)施方式
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請參閱圖1,圖1為本發(fā)明實(shí)施例提供的界面繪制方法的實(shí)現(xiàn)流程示意圖,該方法可應(yīng)用于移動終端中,移動終端包括:需要進(jìn)行界面繪制的智能手機(jī)、平板電腦、筆記本電腦等可在移動中使用的電子數(shù)據(jù)處理設(shè)備。
舉例來說,本發(fā)明實(shí)施例典型的應(yīng)用場景可以具有多個子界面的ui,且其中的至少一個子界面中的元素需要根據(jù)屏幕尺寸的變化而變化,如:電子計(jì)算器、輸入法、播放器界面等,特別是電子計(jì)算器,其ui中的鍵盤界面一般具有橫屏界面和豎屏界面兩種,這兩種界面中元素的數(shù)量、類別以及用途等有所不同,以適應(yīng)不同的屏幕顯示模式。以電子計(jì)算器為例,當(dāng)移動終端的屏幕顯示模式發(fā)生變化時,如圖2a和圖2b所示,從橫屏顯示變?yōu)樨Q屏顯示時,或者,如圖2c和圖2d所示,分屏屏幕的尺寸因?yàn)橛脩粼诜制吝吔绲耐蟿硬僮鞫l(fā)生變化時,此時,可通過本發(fā)明實(shí)施例提供的界面繪制方法,對電子計(jì)算器的界面,特別是電子計(jì)算器中的鍵盤界面進(jìn)行重新繪制。如圖1所示,該方法主要包括以下步驟:
s101、當(dāng)界面布局的尺寸發(fā)生變化時,獲取該界面所在的屏幕的尺寸;
界面布局的尺寸可以是界面的絕對布局的尺寸和相對布局的尺寸。相對布局和絕對布局是界面的兩種布局方式。其中,相對布局是指一個控件的位置是相對的,即,該控件的具體位置取決定于它和其他控件的關(guān)系,絕對布局則相反。
界面布局的尺寸發(fā)生變化的原因,一般是因?yàn)槠聊坏娘@示模式發(fā)生了變化,如:橫屏顯示變?yōu)樨Q屏顯示;或者屏幕的類型發(fā)生了變化,如:從非分屏屏幕轉(zhuǎn)變?yōu)榉制疗聊?;或者,某個分屏屏幕的尺寸因?yàn)橛脩舻耐蟿硬僮?,而發(fā)生了變化。其中,分屏是指將屏幕分割為至少兩個子屏幕,每個子屏幕上都單獨(dú)運(yùn)行著程序,彼此之間互不影響,且每個子屏幕的大小不一定是完全一致的。
可以理解的,界面所在的屏幕可以是分屏屏幕(即,某個子屏幕)或非分屏屏幕(即,整個屏幕)。界面布局的尺寸包括界面布局的高度和寬度,即,整個界面的高度和寬度。界面所在的屏幕的尺寸,即,界面所在的屏幕的高度和寬度。
s102、根據(jù)該屏幕的尺寸,確定該界面中待繪制子界面的布局類型,該布局類型為橫屏界面或豎屏界面;
本實(shí)施例中,界面至少包括:待繪制子界面以及與待繪制子界面相鄰的其他子界面。橫屏界面,即該界面的寬度大于該界面的高度。豎屏界面,即該界面的高度大于該界面的寬度。
具體的,根據(jù)屏幕的寬度和高度的比例(以下簡稱寬高比),確定待繪制子界面的布局類型。當(dāng)屏幕的寬高比大于1時,確定待繪制子界面的布局類型為寬屏界面。當(dāng)屏幕的寬高比小于等于1時,確定待繪制子界面的布局類型為豎屏界面。
s103、根據(jù)該屏幕的類型、尺寸以及待繪制子界面的布局類型,確定待繪制子界面的尺寸;
具體的,屏幕的類型可以但不限于包括分屏屏幕和非分屏屏幕。根據(jù)屏幕的類型、尺寸以及待繪制子界面的布局類型,待繪制子界面的尺寸例如:可以但不限于包括:非分屏屏幕中的豎屏尺寸、非分屏屏幕中的橫屏尺寸、分屏屏幕中的豎屏尺寸以及分屏屏幕中的橫屏尺寸四種。
在實(shí)際應(yīng)用中,可將上述幾種尺寸預(yù)設(shè)在移動終端中,移動終端根據(jù)待繪制子界面的布局類型及分屏狀態(tài),在預(yù)設(shè)的尺寸中查詢得到最適配的尺寸,并根據(jù)查詢得到的尺寸對待繪制子界面進(jìn)行繪制。
或者,當(dāng)界面中包含多個相互關(guān)聯(lián)或相鄰的子界面時,也可以根據(jù)該界面所在屏幕的類型和待繪制子界面的布局類型,確定整個界面中與待繪制子界面關(guān)聯(lián)或相鄰的其他子界面的尺寸,然后根據(jù)該屏幕的尺寸和其他子界面的尺寸,確定待繪制子界面的尺寸。
s104、根據(jù)確定出的待繪制子界面的布局類型及尺寸,繪制該待繪制子界面。
可以理解的,也可以在繪制待繪制子界面的同時,根據(jù)需要,選擇繪制與待繪制子界面相鄰的一個或多個其他子界面。
本發(fā)明實(shí)施例中,通過當(dāng)界面布局的尺寸發(fā)生變化發(fā)生改變時,根據(jù)該界面所在屏幕的尺寸,確定該界面中待繪制子界面的布局類型,并根據(jù)該屏幕的類型、尺寸以及該布局類型,確定該待繪制子界面的尺寸,根據(jù)該布局類型及該待繪制子界面的尺寸,繪制該待繪制子界面。由于是在界面布局尺寸的變化時,動態(tài)調(diào)整待繪制子界面的尺寸,而界面布局尺寸的變化涵蓋了橫、豎屏切換變化及分屏屏幕尺寸變化等多種情況,因此可在橫、豎屏切換顯示時兼顧不同的屏幕類型,如分屏屏幕或非分屏屏幕,動態(tài)適配屏幕的高度和寬度,從而繪制出較為適配的界面,提高了界面繪制的靈活性。
請參閱圖3,圖3為本發(fā)明實(shí)施例提供的界面繪制方法的實(shí)現(xiàn)流程示意圖,移動終端包括:需要進(jìn)行界面繪制的智能手機(jī)、平板電腦、筆記本電腦等可在移動中使用的電子數(shù)據(jù)處理設(shè)備。
舉例來說,本發(fā)明實(shí)施例典型的應(yīng)用場景可以具有多個子界面的ui,且其中的至少一個子界面中的元素需要根據(jù)屏幕尺寸的變化而變化,如:電子計(jì)算器、輸入法、播放器界面等,特別是電子計(jì)算器,其ui中的鍵盤界面一般具有橫屏界面和豎屏界面兩種,這兩種界面中元素的數(shù)量、類別以及用途等有所不同,以適應(yīng)不同的屏幕顯示模式。以電子計(jì)算器為例,當(dāng)移動終端的屏幕顯示模式發(fā)生變化時,如圖2a和圖2b所示,從橫屏顯示變?yōu)樨Q屏顯示時,或者,如圖2c和圖2d所示,分屏屏幕的尺寸因?yàn)橛脩粼诜制吝吔绲耐蟿硬僮鞫l(fā)生變化時,此時,可通過本發(fā)明實(shí)施例提供的界面繪制方法,對電子計(jì)算器的界面,特別是電子計(jì)算器中的鍵盤界面進(jìn)行重新繪制。如圖3所示,該方法包括以下步驟:
s201、通過預(yù)設(shè)的回調(diào)函數(shù),監(jiān)聽界面布局的尺寸是否發(fā)生變化;
s202、當(dāng)界面布局的尺寸發(fā)生變化時,獲取界面所在的屏幕的高度和寬度;
于本實(shí)施例中,界面至少包括:待繪制子界面以及與待繪制子界面相鄰的其他子界面。本實(shí)施例中的界面布局可以是相對布局也可以是絕對布局,較佳地,為相對布局(relativelayout布局)。
具體的,可通過復(fù)寫onsizechanged()的方式,自定義整個界面的relativelayout布局。其中,復(fù)寫(override),即覆蓋或者重寫。同時,在relativelayout布局的activity中設(shè)置監(jiān)聽回調(diào)函數(shù),利用監(jiān)聽回調(diào)函數(shù)監(jiān)聽relativelayout布局的尺寸是否發(fā)生改變。例如,可通過在activity中添加sizechangedlistener函數(shù)來監(jiān)聽relativelayout布局的大小的改變,并當(dāng)監(jiān)聽到界面布局的尺寸發(fā)生變化時,獲取界面所在的屏幕的尺寸。
界面布局的尺寸發(fā)生變化的原因,一般是因?yàn)槠聊坏娘@示模式發(fā)生了變化,如:橫屏顯示變?yōu)樨Q屏顯示;或者屏幕的類型發(fā)生了變化,如:從非分屏屏幕轉(zhuǎn)變?yōu)榉制疗聊?;或者,某個分屏屏幕的尺寸因?yàn)橛脩舻耐蟿硬僮?,而發(fā)生了變化。其中,界面布局的尺寸包括界面布局的高度和寬度,即,整個界面的高度和寬度。分屏是指將屏幕分割為至少兩個子屏幕,每個子屏幕上都單獨(dú)運(yùn)行著程序,彼此之間互不影響,且每個子屏幕的大小不一定是完全一致的。在實(shí)際應(yīng)用中,界面所在的屏幕可以是分屏屏幕或非分屏屏幕。
s203、根據(jù)屏幕的高度和寬度,確定界面中待繪制子界面的布局類型;
布局類型為橫屏界面或豎屏界面。其中橫屏界面,即界面的寬度大于界面的高度。豎屏界面,即界面的高度大于界面的寬度??蛇x的,當(dāng)待繪制子界面為橫屏界面時,待繪制子界面中的元素多于豎屏界面時待繪制子界面中的元素。
具體的,當(dāng)界面布局的尺寸發(fā)生變化時,通過動態(tài)獲取屏幕的高度和寬度,并比較二者的大小,確定需要按照哪一種類型的界面形式,繪制界面中的待繪制子界面。若屏幕的高度小于屏幕的寬度,則將界面中待繪制子界面的布局類型確定為橫屏界面。若屏幕的高度大于屏幕的寬度,則將界面中待繪制子界面的布局類型確定為豎屏界面。以電子計(jì)算器為例,當(dāng)屏幕的高度小于其寬度時,確定該電子計(jì)算器的鍵盤的界面為橫屏鍵盤界面,即,需要按照橫屏鍵盤的形式來繪制該鍵盤的界面;當(dāng)屏幕的高度大于其寬度時,確定該電子計(jì)算器的鍵盤的界面為橫屏鍵盤界面,即,需要按照橫屏鍵盤的形式來繪制該鍵盤的界面。
s204、從預(yù)設(shè)的多個高度中,查找與待繪制子界面的布局類型及屏幕的類型對應(yīng)的,界面中除待繪制子界面之外的其他子界面的高度;
于本實(shí)施例中,其他子界面為界面中緊鄰在待繪制子界面上方或下方的界面。屏幕的類型包括非分屏屏幕和分屏屏幕??蛇x的,在查找高度之前,利用反射機(jī)制獲取屏幕的類型,即判斷當(dāng)前是否處于分屏模式,待繪制子界面所在的屏幕是否為分屏屏幕。
java反射機(jī)制是在運(yùn)行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法。利用反射機(jī)制可以避免因其他判斷方法無法兼容不同版本的操作系統(tǒng),而導(dǎo)致系統(tǒng)在判斷過程中發(fā)生崩潰情況的出現(xiàn),提高本發(fā)明實(shí)施例提供的繪制方法的兼容性。在一實(shí)際應(yīng)用例中,例如可通過如下代碼實(shí)現(xiàn)利用反射機(jī)制,判斷當(dāng)前屏幕是否同時處于分屏模式。
可以理解的,上述代碼僅為一種示例,在實(shí)際應(yīng)用中,可不限于此。
具體的,根據(jù)待繪制子界面的布局類型以及屏幕的類型,可以包括以下四種情況:非分屏屏幕中的豎屏、非分屏屏幕中的橫屏、分屏屏幕中的豎屏以及分屏屏幕中的橫屏。在移動終端中預(yù)設(shè)多個分別與上述四種情況一一對應(yīng)的,其他子界面的高度。則,當(dāng)待繪制子界面的布局類型為橫屏界面,且當(dāng)前屏幕為分屏屏幕時,從預(yù)設(shè)的多個高度中,查找與橫屏界面及分屏屏幕對應(yīng)的其他子界面的高度。當(dāng)待繪制子界面的布局類型為豎屏界面,且當(dāng)前屏幕為分屏屏幕時,從預(yù)設(shè)的多個高度中,查找與豎屏界面及分屏屏幕對應(yīng)的其他子界面的高度。當(dāng)待繪制子界面的布局類型為橫屏界面,且當(dāng)前屏幕為非分屏屏幕時,從預(yù)設(shè)的多個高度中,查找與橫屏界面及非分屏屏幕對應(yīng)的其他子界面的高度。當(dāng)待繪制子界面的布局類型為豎屏界面,且當(dāng)前屏幕為非分屏屏幕時,從預(yù)設(shè)的多個高度中,查找與豎屏界面及非分屏屏幕對應(yīng)的其他子界面的高度。
可選的,可將不同分辨率下的其他子界面的高度分別寫死在不同的文件夾下。例如,將非1080p(progressivescanning,逐行掃描)對應(yīng)的高度寫死在values文件夾下,將1080p對應(yīng)的高度寫死在values-xxhdpi文件夾下。在查找高度時,先確定當(dāng)前其他子界面所在分屏屏幕的分辨率,然后在與該分屏屏幕的分辨率對應(yīng)的文件夾下對其他子界面的高度進(jìn)行查找。
s205、將屏幕的高度減去其他子界面的高度后得到的高度,確定為待繪制子界面的高度,并將屏幕的寬度確定為待繪制子界面的寬度;
上述待繪制子界面的確定方法,可以適配所有的布局類型及屏幕類型的任意組合,因此可以兼容支持不同屏幕類型的移動終端,特別是某些不支持分屏屏幕的移動終端,具有較高的兼容性。
s206、根據(jù)確定出的待繪制子界面的布局類型、寬度和高度,繪制待繪制子界面。
為進(jìn)一步說明上述待繪制子界面尺寸的確定方法,以電子計(jì)算器為例,電子計(jì)算器一般由上方的顯示界面和下方的鍵盤界面構(gòu)成,其中顯示界面用于顯示輸入的字符和計(jì)算結(jié)果,鍵盤界面用于輸入字符。在移動終端中預(yù)設(shè)該顯示界面的多個高度。預(yù)設(shè)的高度分別對應(yīng)于:非分屏屏幕中的橫屏界面(如圖2a所示)、非分屏屏幕中的豎屏界面(如圖2b所示)、分屏屏幕中的橫屏界面(如圖2c所示)以及分屏屏幕中的豎屏界面(如圖2d所示)這四種情況。
假設(shè)電子計(jì)算器界面布局的尺寸發(fā)生變化后,若經(jīng)過確認(rèn),鍵盤界面的布局類型應(yīng)更改為橫屏界面,且電子計(jì)算器位于某個分屏屏幕,則從預(yù)設(shè)的顯示界面的各高度中,查找與橫屏界面和分屏屏幕對應(yīng)的高度h1。然后,將電子計(jì)算器所在分屏屏幕的高度h與查詢得到的高度h1相減,即為此時鍵盤界面的高度h2=h-h1。再然后,根據(jù)所在分屏屏幕的寬度,按照預(yù)設(shè)的適配規(guī)則,自動適配鍵盤界面的寬度,例如,以該分屏屏幕的寬度作為鍵盤界面的寬度w2;或者,以該分屏屏幕的寬度減去預(yù)設(shè)的偏移值后得到的值,作為鍵盤界面的寬度w2。最后,根據(jù)h2和w2以及預(yù)設(shè)的橫屏界面的布局參數(shù)對鍵盤界面進(jìn)行繪制。其中,布局參數(shù)可以但不限于包括:界面中包含的元素的大小、各元素在界面中的位置、類型、調(diào)用地址等等。以鍵盤界面為例,布局參數(shù)可以包括:在鍵盤界面中的哪些位置放置什么樣的字符圖形,界面背景使用什么樣的圖片,從哪里調(diào)用該圖片等等。
本發(fā)明實(shí)施例中,通過實(shí)時監(jiān)聽界面布局尺寸的變化,當(dāng)界面布局的尺寸發(fā)生變化發(fā)生改變時,根據(jù)該界面所在屏幕的尺寸,確定該界面中待繪制子界面的布局類型,并根據(jù)該屏幕的類型、尺寸以及該布局類型,確定該待繪制子界面的尺寸,根據(jù)該布局類型及該待繪制子界面的尺寸,繪制該待繪制子界面。由于是在界面布局尺寸的變化時,動態(tài)調(diào)整待繪制子界面的尺寸,而界面布局尺寸的變化涵蓋了橫、豎屏切換變化及分屏屏幕尺寸變化等多種情況,因此可在橫、豎屏切換顯示時兼顧不同的屏幕類型,如分屏屏幕或非分屏屏幕,動態(tài)適配屏幕的高度和寬度,從而繪制出較為適配的界面,提高了界面繪制的靈活性。
請參閱圖4,圖4是本發(fā)明實(shí)施例提供的移動終端的結(jié)構(gòu)示意圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。圖4示例的移動終端可以是前述圖1所示實(shí)施例提供的界面繪制方法的執(zhí)行主體。圖4示例的移動終端,主要包括:
尺寸獲取模塊301,用于當(dāng)界面布局的尺寸發(fā)生變化時,獲取該界面所在的屏幕的尺寸;
布局類型確定模塊302,用于根據(jù)該屏幕的尺寸,確定該界面中待繪制子界面的布局類型,該布局類型為橫屏界面或豎屏界面;
尺寸確定模塊303,用于根據(jù)該屏幕的類型、尺寸以及該布局類型,確定該待繪制子界面的尺寸;
繪制模塊304,用于根據(jù)該布局類型及該待繪制子界面的尺寸,繪制該待繪制子界面。
具體的,當(dāng)界面布局的尺寸發(fā)生變化時,通過尺寸獲取模塊301獲取該界面所在的屏幕的尺寸。然后,通過布局類型確定模塊302根據(jù)該屏幕的尺寸,確定該界面中待繪制子界面的布局類型,該布局類型為橫屏界面或豎屏界面。接著,通過尺寸確定模塊303根據(jù)該屏幕的類型、尺寸以及該布局類型,確定該待繪制子界面的尺寸。最后,通過繪制模塊304根據(jù)該布局類型及該待繪制子界面的尺寸,繪制該待繪制子界面。
其中,界面布局的尺寸可以是界面的絕對布局的尺寸和相對布局的尺寸。界面所在的屏幕可以是分屏屏幕(即,某個子屏幕)或非分屏屏幕(即,整個屏幕)。
可選的,通過布局類型確定模塊302,根據(jù)屏幕的寬度和高度的比例(以下簡稱寬高比),確定待繪制子界面的布局類型。當(dāng)屏幕的寬高比大于1時,確定待繪制子界面的布局類型為寬屏界面。當(dāng)屏幕的寬高比小于等于1時,確定待繪制子界面的布局類型為豎屏界面。
可選的,根據(jù)屏幕的類型、尺寸以及待繪制子界面的布局類型,待繪制子界面的尺寸可以但不限于包括:非分屏屏幕中的豎屏尺寸、非分屏屏幕中的橫屏尺寸、分屏屏幕中的豎屏尺寸以及分屏屏幕中的橫屏尺寸四種。
在實(shí)際應(yīng)用中,可通過繪制模塊304將上述幾種尺寸預(yù)設(shè)在移動終端中,通過尺寸確定模塊303根據(jù)待繪制子界面的布局類型及分屏狀態(tài),在預(yù)設(shè)的尺寸中查詢得到最適配的尺寸,并通過繪制模塊304根據(jù)查詢得到的尺寸對待繪制子界面進(jìn)行繪制?;蛘?,當(dāng)界面中包含多個相互關(guān)聯(lián)或相鄰的子界面時,也可以通過尺寸確定模塊303根據(jù)該界面所在屏幕的類型和待繪制子界面的布局類型,確定整個界面中與待繪制子界面關(guān)聯(lián)或相鄰的其他子界面的尺寸,然后根據(jù)該屏幕的尺寸和其他子界面的尺寸,確定待繪制子界面的尺寸。
可選的,繪制模塊304在繪制待繪制子界面的同時,根據(jù)需要,選擇繪制與該與待繪制子界面相鄰的一個或多個其他子界面。
本實(shí)施例未盡之細(xì)節(jié),請參閱前述圖1所示實(shí)施例的描述,此處不再贅述。
需要說明的是,以上圖4示例的移動終端的實(shí)施方式中,各功能模塊的劃分僅是舉例說明,實(shí)際應(yīng)用中可以根據(jù)需要,例如相應(yīng)硬件的配置要求或者軟件的實(shí)現(xiàn)的便利考慮,而將上述功能分配由不同的功能模塊完成,即將移動終端的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。而且,實(shí)際應(yīng)用中,本實(shí)施例中的相應(yīng)的功能模塊可以是由相應(yīng)的硬件實(shí)現(xiàn),也可以由相應(yīng)的硬件執(zhí)行相應(yīng)的軟件完成。本說明書提供的各個實(shí)施例都可應(yīng)用上述描述原則,以下不再贅述。
本發(fā)明實(shí)施例中,通過當(dāng)界面布局的尺寸發(fā)生變化發(fā)生改變時,根據(jù)該界面所在屏幕的尺寸,確定該界面中待繪制子界面的布局類型,并根據(jù)該屏幕的類型、尺寸以及該布局類型,確定該待繪制子界面的尺寸,根據(jù)該布局類型及該待繪制子界面的尺寸,繪制該待繪制子界面。由于是在界面布局尺寸的變化時,動態(tài)調(diào)整待繪制子界面的尺寸,而界面布局尺寸的變化涵蓋了橫、豎屏切換變化及分屏屏幕尺寸變化等多種情況,因此可在橫、豎屏切換顯示時兼顧不同的屏幕類型,如分屏屏幕或非分屏屏幕,動態(tài)適配屏幕的高度和寬度,從而繪制出較為適配的界面,提高了界面繪制的靈活性。
請參閱圖5,本發(fā)明實(shí)施例提供的移動終端的結(jié)構(gòu)示意圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。圖5示例的移動終端可以是前述圖1至圖3所示實(shí)施例提供的界面繪制方法的執(zhí)行主體。圖5示例的移動終端,與圖4所示實(shí)施例中的移動終端的不同之處主要在于:
進(jìn)一步地,該尺寸包括寬度和高度,則尺寸確定模塊303包括:
查找模塊3031,用于從預(yù)設(shè)的多個高度中,查找與該屏幕的類型及該布局類型對應(yīng)的,該界面中除該待繪制子界面之外的其他子界面的高度,該其他子界面為該界面中緊鄰在該待繪制子界面上方或下方的界面;
確定模塊3032,用于將該屏幕的高度減去該其他子界面的高度后得到的高度,確定為該待繪制子界面的高度,并將該屏幕的寬度確定為該待繪制子界面的寬度;
其中,當(dāng)該屏幕的類型為分屏屏幕時,查找模塊3031具體用于當(dāng)該布局類型為橫屏界面時,從預(yù)設(shè)的多個高度中,查找與該橫屏界面及該分屏屏幕對應(yīng)的該其他子界面的高度,以及當(dāng)該布局類型為豎屏界面時,從該預(yù)設(shè)的多個高度中,查找與該豎屏界面及該分屏屏幕對應(yīng)的該其他子界面的高度;
當(dāng)該屏幕的類型為非分屏屏幕時,查找模塊3031還具體用于當(dāng)該布局類型為橫屏界面時,從該預(yù)設(shè)的多個高度中,查找與該橫屏界面及該非分屏屏幕對應(yīng)的該其他子界面的高度,以及當(dāng)該布局類型為豎屏界面時,從該預(yù)設(shè)的多個高度中,查找與該豎屏界面及該非分屏屏幕對應(yīng)的該其他子界面的高度。
進(jìn)一步地,布局類型確定模塊302,具體用于比較該屏幕的高度和寬度的大小,若該高度小于該寬度,則將該布局類型確定為該橫屏界面,以及若該高度大于該寬度,則將該布局類型確定為該豎屏界面。
進(jìn)一步地,該移動終端還包括:
監(jiān)聽模塊401,用于通過預(yù)設(shè)的回調(diào)函數(shù),監(jiān)聽該界面布局的尺寸是否發(fā)生變化。
具體的,調(diào)用監(jiān)聽模塊401通過復(fù)寫onsizechanged()的方式,自定義整個界面的relativelayout布局。同時,在relativelayout布局的activity中設(shè)置監(jiān)聽回調(diào)函數(shù),利用監(jiān)聽回調(diào)函數(shù)監(jiān)聽relativelayout布局的尺寸是否發(fā)生改變。例如,可通過在activity中添加sizechangedlistener函數(shù)來監(jiān)聽relativelayout布局的大小的改變,并當(dāng)監(jiān)聽到界面布局的尺寸發(fā)生變化時,通過尺寸獲取模塊301獲取界面所在的屏幕的尺寸。
然后,通過布局類型確定模塊302比較獲取的屏幕的高度和寬度的大小,若該高度小于該寬度,則將該布局類型確定為該橫屏界面,以及若該高度大于該寬度,則將該布局類型確定為該豎屏界面。
可選的,于本發(fā)明其他一實(shí)施例中,該移動終端還可包括判斷模塊,用于在監(jiān)聽到該界面布局的尺寸發(fā)生變化之后,利用反射機(jī)制判斷該屏幕的類型,即判斷當(dāng)前是否處于分屏模式,待繪制子界面所在的屏幕是否為分屏屏幕。
然后,通過查找模塊3031從預(yù)設(shè)的多個高度中,查找與該屏幕的類型及該布局類型對應(yīng)的,該界面中除該待繪制子界面之外的其他子界面的高度,該其他子界面為該界面中緊鄰在該待繪制子界面上方或下方的界面。通過確定模塊3032,將該屏幕的高度減去該其他子界面的高度后得到的高度,確定為該待繪制子界面的高度,并將該屏幕的寬度確定為該待繪制子界面的寬度。
可選的,也可通過確定模塊3032根據(jù)所在分屏屏幕的寬度,按照預(yù)設(shè)的其他適配規(guī)則,自動適配鍵盤界面的寬度,例如,以該分屏屏幕的寬度減去預(yù)設(shè)的偏移值后得到的值,作為待繪制子界面的寬度。
可選的,于本發(fā)明其他一實(shí)施例中,該移動終端還可包括配置模塊,用于將不同分辨率下的其他子界面的高度分別寫死在不同的文件夾下。例如,將非1080p對應(yīng)的高度寫死在values文件夾下,將1080p對應(yīng)的高度寫死在values-xxhdpi文件夾下。在查找高度時,通過確定模塊3032先確定當(dāng)前其他子界面所在分屏屏幕的分辨率,然后在與該分屏屏幕的分辨率對應(yīng)的文件夾下對其他子界面的高度進(jìn)行查找。
本實(shí)施例未盡之細(xì)節(jié),請參閱前述圖1至圖4所示實(shí)施例的描述,此處不再贅述。
本發(fā)明實(shí)施例中,通過實(shí)時監(jiān)聽界面布局尺寸的變化,當(dāng)界面布局的尺寸發(fā)生變化發(fā)生改變時,根據(jù)該界面所在屏幕的尺寸,確定該界面中待繪制子界面的布局類型,并根據(jù)該屏幕的類型、尺寸以及該布局類型,確定該待繪制子界面的尺寸,根據(jù)該布局類型及該待繪制子界面的尺寸,繪制該待繪制子界面。由于是在界面布局尺寸的變化時,動態(tài)調(diào)整待繪制子界面的尺寸,而界面布局尺寸的變化涵蓋了橫、豎屏切換變化及分屏屏幕尺寸變化等多種情況,因此可在橫、豎屏切換顯示時兼顧不同的屏幕類型,如分屏屏幕或非分屏屏幕,動態(tài)適配屏幕的高度和寬度,從而繪制出較為適配的界面,提高了界面繪制的靈活性。
請參閱圖6,圖6為本發(fā)明實(shí)施例提供的移動終端的硬件結(jié)構(gòu)圖。
本實(shí)施例中所描述的移動終端,包括:
存儲器51、處理器52及存儲在存儲器51上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,處理器執(zhí)行所述程序時實(shí)現(xiàn)前述圖1~圖5所示實(shí)施例中描述的界面繪制方法。
進(jìn)一步地,該移動終端還包括:
至少一個輸入設(shè)備53;至少一個輸出設(shè)備54。
上述存儲器51、處理器52輸入設(shè)備53和輸出設(shè)備54通過總線55連接。
其中,輸入設(shè)備53具體可為攝像頭、觸控面板、物理按鍵或者鼠標(biāo)等等。輸出設(shè)備54具體可為顯示屏。
存儲器51可以是高速隨機(jī)存取記憶體(ram,randomaccessmemory)存儲器,也可為非不穩(wěn)定的存儲器(non-volatilememory),例如磁盤存儲器。存儲器51用于存儲一組可執(zhí)行程序代碼,處理器52與存儲器51耦合。
進(jìn)一步地,本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)可讀存儲介質(zhì),該計(jì)算機(jī)可讀存儲介質(zhì)可以是設(shè)置于上述各實(shí)施例中的移動終端中,該計(jì)算機(jī)可讀存儲介質(zhì)可以是前述圖6所示實(shí)施例中的存儲器。該計(jì)算機(jī)可讀存儲介質(zhì)上存儲有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時實(shí)現(xiàn)前述圖1~圖3所示實(shí)施例中描述的界面繪制方法。進(jìn)一步地,該計(jì)算機(jī)可存儲介質(zhì)還可以是u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
在本申請所提供的多個實(shí)施例中,應(yīng)該理解到,所揭露的移動終端和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的實(shí)施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個模塊或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信鏈接可以是通過一些接口,模塊的間接耦合或通信鏈接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)模塊上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個實(shí)施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨(dú)物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。
需要說明的是,對于前述的各方法實(shí)施例,為了簡便描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其它順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作和模塊并不一定都是本發(fā)明所必須的。
在上述實(shí)施例中,對各個實(shí)施例的描述都各有側(cè)重,某個實(shí)施例中沒有詳述的部分,可以參見其它實(shí)施例的相關(guān)描述。
以上為對本發(fā)明所提供的界面繪制方法、移動終端及計(jì)算機(jī)可讀存儲介質(zhì)的描述,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實(shí)施例的思想,在具體實(shí)施方式及應(yīng)用范圍上均會有改變之處,綜上,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。