專利名稱:一種界面控件樹的創(chuàng)建和繪制的方法、系統(tǒng)及移動(dòng)終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)結(jié)構(gòu)領(lǐng)域,尤其涉及一種界面控件樹的創(chuàng)建和繪制的方法、系統(tǒng) 及移動(dòng)終端。
背景技術(shù):
現(xiàn)有的移動(dòng)終端中主流手機(jī)開發(fā)平臺,如symbiaruwindows mobile、J2ME等系統(tǒng), 都提供了供開發(fā)使用的UI (User Interface)控件,為了讓開發(fā)人員可以擴(kuò)展自有特色的 UI控件,各開發(fā)平臺都提供了繪圖工具類,如symbian系統(tǒng)的CGraphicsContext,J2ME系 統(tǒng)Graphics等,這些UI控件是實(shí)現(xiàn)人機(jī)交互的重要組成部分,但現(xiàn)有系統(tǒng)提供的UI控件, 都不支持動(dòng)畫效果(如控件的平移,縮放、翻轉(zhuǎn)等等),特別是在J2ME系統(tǒng)中,UI控件不易 相互包含以組成復(fù)雜的控件系統(tǒng),且不支持界面控件動(dòng)畫效果。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提出一種界面控件樹的創(chuàng)建方法,旨在解決移動(dòng)終端開 發(fā)平臺上的界面控件系統(tǒng)不易相互包含以組成復(fù)雜的控件系統(tǒng),且不支持界面控件動(dòng)畫效 果的問題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種界面控件樹的創(chuàng)建方法,所述方法包括創(chuàng)建界面控件基類UIBase及其操作函數(shù)、動(dòng)畫控制函數(shù)和標(biāo)簽狀態(tài);創(chuàng)建界面控件基類UIBase的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)和繪制動(dòng)畫內(nèi)容函數(shù);創(chuàng)建派生于界面控件基類UIBase的具體控件類,包括動(dòng)畫繪制節(jié)點(diǎn)UlView、界 面容器控件UIBox和界面控件節(jié)點(diǎn);創(chuàng)建動(dòng)畫繪制節(jié)點(diǎn)UIView的定時(shí)器回調(diào)函數(shù)AnimationTimerCallBack ;組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng)建生成界面控件樹和類的對象。本發(fā)明實(shí)施例的另一目的在于提出一種界面控件樹繪制方法,所述方法包括運(yùn)行界面控件節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)StartAnimation ;判斷界面控件節(jié)點(diǎn)是否存在父節(jié)點(diǎn),如果是,則進(jìn)入步驟“運(yùn)行界面控件節(jié)點(diǎn)的動(dòng) 畫開啟函數(shù)StartAnimatioW即調(diào)用父節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)),如果否(即當(dāng)前的界面控 件節(jié)點(diǎn)是動(dòng)畫繪制節(jié)點(diǎn)UIView),則動(dòng)畫繪制節(jié)點(diǎn)UIView開啟動(dòng)畫定時(shí)器;動(dòng)畫定時(shí)器每到一個(gè)時(shí)間周期,動(dòng)畫定時(shí)器回調(diào)動(dòng)畫繪制節(jié)點(diǎn)UIView的定時(shí)器 AnimationTimerCallBack ;定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UIView的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù) PrepareAFrameOfAnimation ;定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UIView的繪制準(zhǔn)備函數(shù)DrawNow繪制整顆界 面控件樹的動(dòng)畫效果。本發(fā)明實(shí)施例的另一目的在于提出一種界面控件樹創(chuàng)建系統(tǒng),所述系統(tǒng)包括基 類創(chuàng)建模塊、控件類創(chuàng)建模塊、控件樹創(chuàng)建模塊;
基類創(chuàng)建模塊,與控件類創(chuàng)建模塊相連,用于創(chuàng)建界面控件基類UIBase及其操作 函數(shù)、動(dòng)畫控制函數(shù)、標(biāo)簽狀態(tài)、當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)和繪制動(dòng)畫內(nèi)容函數(shù);控件類創(chuàng)建模塊,與基類創(chuàng)建模塊和控件樹創(chuàng)建模塊相連,用于創(chuàng)建派生 于界面控件基類UIBase的具體控件類,如圖2,包括動(dòng)畫繪制節(jié)點(diǎn)UlView、界面 容器控件UIBox和界面控件節(jié)點(diǎn),并創(chuàng)建動(dòng)畫繪制節(jié)點(diǎn)UIView的定時(shí)器回調(diào)函數(shù) AnimationTimerCallBack ;控件樹創(chuàng)建模塊,與控件類創(chuàng)建模塊相連,用于組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng) 建生成界面控件樹和類的對象。本發(fā)明實(shí)施例的另一目的在于提出一種界面控件樹繪制系統(tǒng),所述系統(tǒng)包括動(dòng) 畫開啟模塊、第一判斷模塊、定時(shí)模塊、回調(diào)模塊、第二判斷模塊、繪制模塊;動(dòng)畫開啟模塊,與第一判斷模塊相連,用于運(yùn)行界面控件節(jié)點(diǎn)的動(dòng)畫開啟函數(shù) StartAnimation并向第一判斷模塊發(fā)送判斷父節(jié)點(diǎn)指令,接收第一判斷模塊的開啟指令并 運(yùn)行父節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)StartAnimation ;第一判斷模塊,與動(dòng)畫開啟模塊和定時(shí)模塊相連,用于接收動(dòng)畫開啟模塊發(fā)送的 判斷父節(jié)點(diǎn)指令并判斷界面控件節(jié)點(diǎn)是否存在父節(jié)點(diǎn),如果是則向動(dòng)畫開啟模塊發(fā)送開啟 指令,如果否(即當(dāng)前界面控件節(jié)點(diǎn)是根節(jié)點(diǎn)),則向定時(shí)模塊發(fā)送定時(shí)指令;定時(shí)模塊,與第一判斷模塊、第二判斷模塊和回調(diào)模塊相連,用于接收第一判斷模 塊發(fā)送的定時(shí)指令并開啟一個(gè)時(shí)間周期為50-125毫秒或80毫秒的動(dòng)畫定時(shí)器,動(dòng)畫定時(shí) 器每到一個(gè)時(shí)間周期向回調(diào)模塊發(fā)送一次回調(diào)指令,接收第二判斷模塊發(fā)送的停止定時(shí)指 令并停止定時(shí)器的運(yùn)行,接收第二判斷模塊發(fā)送的繼續(xù)定時(shí)指令并控制定時(shí)器每到一個(gè)時(shí) 間周期向回調(diào)模塊發(fā)送一次回調(diào)指令;回調(diào)模塊,與定時(shí)模塊、第二判斷模塊和繪制模塊相連,用于接收定時(shí)模塊發(fā)送的 回調(diào)指令并調(diào)用定時(shí)器回調(diào)函數(shù)AnimationTimerCallBack,定時(shí)器回調(diào)函數(shù)調(diào)用根節(jié)點(diǎn)的 當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)Pr印areAFrameOf Animat ion,所述當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)包括 繪制普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenAFrame和繪制內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenInnerAFrame,并 依次調(diào)用當(dāng)前界面控件節(jié)點(diǎn)所有子節(jié)點(diǎn)的繪制幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù),當(dāng)所有節(jié)點(diǎn)的繪制幀 動(dòng)畫內(nèi)容準(zhǔn)備就緒后,向繪制模塊發(fā)送繪制指令,同時(shí)向第二判斷模塊發(fā)送判斷動(dòng)畫結(jié)束 指令;第二判斷模塊,與回調(diào)模塊和定時(shí)模塊相連,用于接收回調(diào)模塊發(fā)送的判斷動(dòng)畫 結(jié)束指令并判斷界面控件節(jié)點(diǎn)的標(biāo)簽狀態(tài)是否都為“動(dòng)畫結(jié)束”,如果是,則向定時(shí)模塊發(fā) 送停止定時(shí)指令,則整個(gè)動(dòng)畫過程已完成;如果否,則向定時(shí)模塊發(fā)送繼續(xù)定時(shí)指令;繪制模塊,與回調(diào)模塊相連,用于接收回調(diào)模塊發(fā)送的繪制指令并調(diào)用根節(jié)點(diǎn)的 繪制準(zhǔn)備函數(shù)DrawNow繪制整顆界面控件樹的動(dòng)畫效果。本發(fā)明實(shí)施例的另一目的在于提出一種包括所述界面控件樹創(chuàng)建系統(tǒng)的終端設(shè) 備的移動(dòng)終端。本發(fā)明實(shí)施例的另一目的在于提出一種包括所述界面控件樹繪制系統(tǒng)的終端設(shè) 備的移動(dòng)終端。本發(fā)明的有益效果通過創(chuàng)建界面控件基類UIBase及其操作函數(shù)、動(dòng)畫控制函數(shù)和標(biāo)簽狀態(tài)、當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、繪制動(dòng)畫內(nèi)容函數(shù),創(chuàng)建派生于界面控件基類UIBase的具體控件類生 成動(dòng)畫繪制節(jié)點(diǎn)UlView、界面容器控件UIBox和界面控件節(jié)點(diǎn),創(chuàng)建動(dòng)畫繪制節(jié)點(diǎn)UlView 的定時(shí)器回調(diào)函數(shù),組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng)建生成界面控件樹和類的對象,通過 相互包含構(gòu)成復(fù)合控件,定義不同的類、對象、和函數(shù)類型實(shí)現(xiàn)增加、修改或移植控件樹結(jié) 構(gòu),只有根節(jié)點(diǎn)動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制準(zhǔn)備函數(shù)DrawNow和系統(tǒng)交互,完成繪制界面 控件樹的動(dòng)畫效果的目的,通過事先設(shè)置的回調(diào)接口函數(shù)可依次連續(xù)執(zhí)行多個(gè)類型的動(dòng)畫 效果,動(dòng)畫繪制節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)被調(diào)用時(shí)開啟一個(gè)動(dòng)畫定時(shí)器,根據(jù)移動(dòng)終端的性能 確定動(dòng)畫定時(shí)器的時(shí)間周期,使得畫面均勻呈現(xiàn),克服了界面控件不易相互包含以組成復(fù) 雜的控件系統(tǒng)的技術(shù)問題,在一個(gè)屏幕頁面中組織復(fù)雜的控件布局,高效地實(shí)現(xiàn)整個(gè)系統(tǒng) 的動(dòng)畫效果。
圖1是本發(fā)明實(shí)施例一種界面控件樹創(chuàng)建方法的流程圖;圖2是本發(fā)明實(shí)施例控件類結(jié)構(gòu)圖;圖3是本發(fā)明實(shí)施例三級界面控件樹結(jié)構(gòu)圖;圖4是本發(fā)明實(shí)施例一種界面控件樹繪制方法流程圖;圖5是本發(fā)明實(shí)施例一種界面控件樹創(chuàng)建系統(tǒng)結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例一種界面控件樹繪制系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖和實(shí)施例,對 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。應(yīng)當(dāng)理 解,此處所描寫的具體實(shí)施例,僅僅用于解釋本發(fā)明,并不用以限制本發(fā)明。本發(fā)明通過創(chuàng)建界面控件基類UIBase及其操作函數(shù)、動(dòng)畫控制函數(shù)和標(biāo)簽狀態(tài)、 當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、繪制動(dòng)畫內(nèi)容函數(shù),創(chuàng)建派生于界面控件基類UIBase的具體控 件類生成動(dòng)畫繪制節(jié)點(diǎn)UlView、界面容器控件UIBox和界面控件節(jié)點(diǎn),創(chuàng)建動(dòng)畫繪制節(jié)點(diǎn) UlView的定時(shí)器回調(diào)函數(shù),組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng)建生成界面控件樹和類的對 象,通過相互包含構(gòu)成復(fù)合控件,定義不同的類、對象、和函數(shù)類型實(shí)現(xiàn)增加、修改或移植控 件樹結(jié)構(gòu),只有根節(jié)點(diǎn)動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制準(zhǔn)備函數(shù)DrawNow和系統(tǒng)交互,完成繪 制界面控件樹的動(dòng)畫效果。實(shí)施例一圖1是本發(fā)明實(shí)施例一種界面控件樹的創(chuàng)建方法的流程圖。所述方法包括步驟S101,創(chuàng)建界面控件基類UIBase及其操作函數(shù)、動(dòng)畫控制函數(shù)和標(biāo)簽狀態(tài);所述操作函數(shù)包括加入、獲取、查找子節(jié)點(diǎn)、兄弟節(jié)點(diǎn)、父節(jié)點(diǎn)的函數(shù);所述動(dòng)畫控制函數(shù)包括普通動(dòng)畫控制函數(shù)和內(nèi)部動(dòng)畫控制函數(shù),普通動(dòng)畫控制函 數(shù)和內(nèi)部動(dòng)畫控制函數(shù)可同時(shí)運(yùn)行;所述普通動(dòng)畫控制函數(shù)指整個(gè)控件節(jié)點(diǎn)相對其兄弟節(jié)點(diǎn)的運(yùn)動(dòng),包括平移、縮放、 旋轉(zhuǎn);所述內(nèi)部動(dòng)畫控制函數(shù)指控件內(nèi)的變化,包括走馬燈字符的移動(dòng);
普通動(dòng)畫控制函數(shù)和內(nèi)部動(dòng)畫控制函數(shù),分別包括動(dòng)畫開啟函數(shù)、暫停動(dòng)畫函數(shù)、 繼續(xù)動(dòng)畫函數(shù)、結(jié)束動(dòng)畫函數(shù);所述的動(dòng)畫開啟函數(shù)StartAnimation,用于獲取控件節(jié)點(diǎn)的動(dòng)畫效果類型、動(dòng)畫 時(shí)長、動(dòng)畫結(jié)束后是否刪除節(jié)點(diǎn),控件節(jié)點(diǎn)的初始位置和大小,控件節(jié)點(diǎn)動(dòng)畫結(jié)束時(shí)節(jié)點(diǎn)的 位置和大小,控件節(jié)點(diǎn)結(jié)束時(shí)是否回調(diào)通知控件節(jié)點(diǎn)的動(dòng)畫觀察者;所述的動(dòng)畫效果類型是按照產(chǎn)品需求事先定義的效果;所述的動(dòng)畫觀察者指關(guān)注該控件節(jié)點(diǎn)動(dòng)畫過程的對象(包括程序中的其他對象、 其他的控件節(jié)點(diǎn)),事先將觀察者對象的動(dòng)畫回調(diào)接口設(shè)定給控件節(jié)點(diǎn),當(dāng)控件節(jié)點(diǎn)的動(dòng)畫 狀態(tài)發(fā)生改變時(shí),通過事先設(shè)置的回調(diào)接口函數(shù)通知調(diào)用該控件節(jié)點(diǎn)者,通過回調(diào)接口,可 以依次連續(xù)執(zhí)行多個(gè)類型的動(dòng)畫;所述的標(biāo)簽狀態(tài)記錄節(jié)點(diǎn)動(dòng)畫的狀態(tài),包括動(dòng)畫播放、動(dòng)畫暫停和動(dòng)畫結(jié)束;動(dòng)畫開啟函數(shù)設(shè)置標(biāo)簽狀態(tài)為“動(dòng)畫播放”,播放幀數(shù)全部完成后,標(biāo)簽狀態(tài)就被 設(shè)置“動(dòng)畫結(jié)束”;暫停動(dòng)畫函數(shù),將標(biāo)簽狀態(tài)置為“動(dòng)畫暫停”;繼續(xù)動(dòng)畫函數(shù),將標(biāo)簽狀態(tài)置為“動(dòng)畫播放”;結(jié)束動(dòng)畫函數(shù),將標(biāo)簽狀態(tài)置為“動(dòng)畫結(jié)束”;S102,創(chuàng)建界面控件基類UIBase的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)和繪制動(dòng)畫內(nèi)容函 數(shù);所述當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)包括準(zhǔn)備控件節(jié)點(diǎn)的位置、大小、形狀、顏色、透明 度,含普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù);所述繪制動(dòng)畫內(nèi)容函數(shù)指繪制控件節(jié)點(diǎn)的動(dòng)畫效果的函數(shù);所述的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)?1~印3儀六 儀1116(^六11丨11^^011、普通動(dòng)畫內(nèi)容準(zhǔn)備 函數(shù)GenAFrame、內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenAFrame為虛函數(shù),可以修改和增加新的動(dòng)畫效 果類型;所述的繪制動(dòng)畫內(nèi)容函數(shù)Draw為純虛函數(shù);S103,創(chuàng)建派生于界面控件基類UIBase的具體控件類,如圖2所示控件類結(jié)構(gòu)圖, 包括動(dòng)畫繪制節(jié)點(diǎn)UlView、界面容器控件UIBox和界面控件節(jié)點(diǎn);所述的界面容器控件UIBox是包含界面控件節(jié)點(diǎn)的一個(gè)容器類;所述界面控件節(jié)點(diǎn)包括界面圖片Ullmage、界面標(biāo)簽UILable、界面網(wǎng)格UIGrid、 界面走馬燈UIMarquee ;S104,創(chuàng)建動(dòng)畫繪制節(jié)點(diǎn)UIView的定時(shí)器回調(diào)函數(shù)AnimationTimerCallBack ;所述動(dòng)畫繪制節(jié)點(diǎn)UIView在動(dòng)畫開啟函數(shù)StartAnimation被調(diào)用時(shí)開啟一個(gè)時(shí) 間周期為50-125毫秒或80毫秒的動(dòng)畫定時(shí)器,動(dòng)畫定時(shí)器每隔一個(gè)時(shí)間周期回調(diào)一次動(dòng) 畫繪制節(jié)點(diǎn)UIView的定時(shí)器回調(diào)函數(shù);所述定時(shí)器回調(diào)函數(shù)包括步驟S1041,定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UIView的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù) PrepareAFrameOfAnimation JfIgfU 白勺云力Ii ;S1042,當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)調(diào)用繪制普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenAFrame和 繪制內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenlrmerAFrame,并依次調(diào)用當(dāng)前界面控件節(jié)點(diǎn)所有子節(jié)點(diǎn)的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù);所述的依次調(diào)用過程是以深度遍歷的方式調(diào)用了所有控件節(jié)點(diǎn)的繪制幀動(dòng)畫內(nèi) 容準(zhǔn)備函數(shù)PrepareAFrameOfAnimation,使得所有控件節(jié)點(diǎn)準(zhǔn)備好需要繪制的動(dòng)畫內(nèi)容;S1043,判斷界面控件節(jié)點(diǎn)的標(biāo)簽狀態(tài)是否都為“動(dòng)畫結(jié)束”,如果是,則進(jìn)入步驟 S1044,如果否,則進(jìn)入步驟S1045 ;S1044,停止動(dòng)畫定時(shí)器,整個(gè)動(dòng)畫過程已完成;S1045,定時(shí)器回調(diào)函數(shù)調(diào)用繪制準(zhǔn)備函數(shù)DrawNow繪制整顆界面控件樹的動(dòng)畫 效果;所述的繪制準(zhǔn)備函數(shù)DrawNow將調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制動(dòng)畫內(nèi)容函數(shù) Draw,動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制動(dòng)畫內(nèi)容函數(shù)Draw采用深度遍歷的方式調(diào)用所有界面 控件節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù)Draw,將整顆界面控件樹的動(dòng)畫效果繪制屏幕上;所述的繪制準(zhǔn)備函數(shù)DrawNow還可以通知操作系統(tǒng)(比如symbian系統(tǒng)控件的 DrawNow函數(shù),J2ME平臺的canvas類的r印aint函數(shù)),由操作系統(tǒng)回調(diào)至動(dòng)畫繪制節(jié)點(diǎn) UlView的繪制動(dòng)畫內(nèi)容函數(shù)Draw,在動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制動(dòng)畫內(nèi)容函數(shù)Draw中采 用深度遍歷的方式將整顆界面控件樹的動(dòng)畫效果繪制屏幕上;S1046,動(dòng)畫定時(shí)器每到一個(gè)時(shí)間周期,動(dòng)畫定時(shí)器再次回調(diào)動(dòng)畫繪制節(jié)點(diǎn)UlView 的定時(shí)器回調(diào)函數(shù)以進(jìn)入步驟S1041 ;S105,組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng)建生成界面控件樹和類的對象;界面控件樹可以通過任意組合各控件節(jié)點(diǎn)的父子兄弟關(guān)系生成不同的界面控件 樹,以一個(gè)3級界面控件樹為例,如圖3,子根節(jié)點(diǎn)是動(dòng)畫繪制節(jié)點(diǎn)UlView對象,第二級節(jié)點(diǎn) 是界面容器控件節(jié)點(diǎn)UIBox對象,第三級節(jié)點(diǎn)就是界面控件節(jié)點(diǎn)對象。本發(fā)明實(shí)施例中通過創(chuàng)建界面控件基類UIBase及其操作函數(shù)、動(dòng)畫控制函數(shù)和 標(biāo)簽狀態(tài)、當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、繪制動(dòng)畫內(nèi)容函數(shù),創(chuàng)建派生于界面控件基類UIBase 的具體控件類生成動(dòng)畫繪制節(jié)點(diǎn)UlView、界面容器控件UIBox和界面控件節(jié)點(diǎn),創(chuàng)建動(dòng)畫 繪制節(jié)點(diǎn)UlView的定時(shí)器回調(diào)函數(shù),組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng)建生成界面控件樹 和類的對象,通過相互包含構(gòu)成復(fù)合控件,定義不同的類、對象、和函數(shù)類型實(shí)現(xiàn)增加、修改 或移植控件樹結(jié)構(gòu),只有根節(jié)點(diǎn)動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制準(zhǔn)備函數(shù)DrawNow和系統(tǒng)交 互,完成繪制界面控件樹的動(dòng)畫效果的目的,通過事先設(shè)置的回調(diào)接口函數(shù)可依次連續(xù)執(zhí) 行多個(gè)類型的動(dòng)畫效果,動(dòng)畫繪制節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)被調(diào)用時(shí)開啟一個(gè)動(dòng)畫定時(shí)器,根 據(jù)移動(dòng)終端的性能確定動(dòng)畫定時(shí)器的時(shí)間周期,使得畫面均勻呈現(xiàn),克服了界面控件不易 相互包含以組成復(fù)雜的控件系統(tǒng)的技術(shù)問題。實(shí)施例二圖4是本發(fā)明實(shí)施例一種界面控件樹繪制方法流程圖。所述方法包括以下步驟S401,運(yùn)行界面控件節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)StartAnimation ;所述的界面控件節(jié)點(diǎn)包括界面圖片Ullmage、界面標(biāo)簽UILable、界面網(wǎng)格 UIGrid、界面走馬燈 UIMarquee ;所述的動(dòng)畫開啟函數(shù)StartAnimation用于獲取控件節(jié)點(diǎn)的動(dòng)畫效果類型(如平 移、縮放、旋轉(zhuǎn)等)、動(dòng)畫時(shí)長、動(dòng)畫結(jié)束后是否刪除控件節(jié)點(diǎn)、控件節(jié)點(diǎn)的初始位置和大小, 控件節(jié)點(diǎn)動(dòng)畫結(jié)束時(shí)節(jié)點(diǎn)的位置和大小,控件節(jié)點(diǎn)結(jié)束時(shí)是否回調(diào)通知控件節(jié)點(diǎn)的動(dòng)畫觀察者;所述的動(dòng)畫效果類型是按照產(chǎn)品需求事先定義的效果;所述的動(dòng)畫觀察者指關(guān)注該控件節(jié)點(diǎn)動(dòng)畫過程的對象(包括程序中的其他對象、 其他的控件節(jié)點(diǎn)),事先將觀察者對象的動(dòng)畫回調(diào)接口設(shè)定給控件節(jié)點(diǎn),當(dāng)控件節(jié)點(diǎn)的動(dòng)畫 狀態(tài)發(fā)生改變時(shí),通過事先設(shè)置的回調(diào)接口函數(shù)通知調(diào)用該控件節(jié)點(diǎn)者,通過回調(diào)接口,可 以依次連續(xù)執(zhí)行多個(gè)類型的動(dòng)畫;S402,判斷界面控件節(jié)點(diǎn)是否存在父節(jié)點(diǎn),如果是則進(jìn)入步驟S401,如果否(即當(dāng) 前的界面控件節(jié)點(diǎn)是動(dòng)畫繪制節(jié)點(diǎn)UIView),則進(jìn)入步驟S403 ;S403,動(dòng)畫繪制節(jié)點(diǎn)UIView開啟動(dòng)畫定時(shí)器;所述的動(dòng)畫定時(shí)器是一個(gè)時(shí)間周期為50-125毫秒或80毫秒的動(dòng)畫定時(shí)器,動(dòng)畫 定時(shí)器每隔50-125毫秒或80毫秒回調(diào)一次動(dòng)畫繪制節(jié)點(diǎn)UIView的定時(shí)器回調(diào)函數(shù);S404,動(dòng)畫定時(shí)器每到一個(gè)時(shí)間周期,動(dòng)畫定時(shí)器回調(diào)動(dòng)畫繪制節(jié)點(diǎn)UIView的定 時(shí)器回調(diào)函數(shù) AnimationTimerCallBack ;S405,定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UIView的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù) PrepareAFrameOfAnimation,當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)具體包括步驟S4051,定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UIView的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù) PrepareAFrameOfAnimation JfIgfU 白勺云力Ii ;S4052當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)調(diào)用繪制普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenAFrame和 繪制內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenlrmerAFrame,并依次調(diào)用當(dāng)前控件節(jié)點(diǎn)所有子節(jié)點(diǎn)的當(dāng)前 幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù);所述的依次調(diào)用過程是以深度遍歷的方式調(diào)用了所有控件節(jié)點(diǎn)的繪制幀動(dòng)畫內(nèi) 容準(zhǔn)備函數(shù)PrepareAFrameOfAnimation,使得所有控件節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容準(zhǔn)備就緒;S4053,判斷界面控件節(jié)點(diǎn)的標(biāo)簽狀態(tài)是否都為“動(dòng)畫結(jié)束”,如果是,則進(jìn)入步驟 S4054,如果否,則進(jìn)入步驟S4055 ;S4054,停止動(dòng)畫定時(shí)器,整個(gè)動(dòng)畫過程已完成;S4055,動(dòng)畫定時(shí)器每到一個(gè)時(shí)間周期會(huì)再次回調(diào)動(dòng)畫繪制節(jié)點(diǎn)UIView的定時(shí)器 回調(diào)函數(shù)以進(jìn)入步驟S4051 ;S406,定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UIView的繪制準(zhǔn)備函數(shù)DrawNow繪制整 顆界面控件樹的動(dòng)畫效果;所述的繪制準(zhǔn)備函數(shù)DrawNow將調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UIView的繪制動(dòng)畫內(nèi)容函數(shù) Draw,動(dòng)畫繪制節(jié)點(diǎn)UIView的繪制動(dòng)畫內(nèi)容函數(shù)Draw采用深度遍歷的方式調(diào)用所有界面 控件節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù)Draw,將整顆界面控件樹的動(dòng)畫效果繪制屏幕上;所述的繪制準(zhǔn)備函數(shù)DrawNow還可以通知操作系統(tǒng)(比如symbian系統(tǒng)控件的 DrawNow函數(shù),J2ME平臺的canvas類的r印aint函數(shù)),由操作系統(tǒng)回調(diào)至動(dòng)畫繪制節(jié)點(diǎn) UIView的繪制動(dòng)畫內(nèi)容函數(shù)Draw,在動(dòng)畫繪制節(jié)點(diǎn)UIView的繪制動(dòng)畫內(nèi)容函數(shù)Draw中采 用深度遍歷的方式將整顆界面控件樹的動(dòng)畫效果繪制屏幕上。本發(fā)明實(shí)施例中通過相互包含構(gòu)成的復(fù)合控件類及其函數(shù),按照產(chǎn)品需求事先 定義各控件節(jié)點(diǎn)的動(dòng)畫效果,可以隨意組合生成界面控件樹,只有根節(jié)點(diǎn)動(dòng)畫繪制節(jié)點(diǎn) UIView的繪制準(zhǔn)備函數(shù) 和系統(tǒng)交互,完成繪制界面控件樹的動(dòng)畫效果的目的,同時(shí),通過事先設(shè)置的回調(diào)接口函數(shù)可依次連續(xù)執(zhí)行多個(gè)類型的動(dòng)畫效果,動(dòng)畫繪制節(jié)點(diǎn)的 動(dòng)畫開啟函數(shù)被調(diào)用時(shí)開啟一個(gè)動(dòng)畫定時(shí)器,根據(jù)流媒體文件的頻率,確定動(dòng)畫定時(shí)器的 時(shí)間周期,使得畫面均勻呈現(xiàn),根據(jù)定義不同的類、對象、和函數(shù)類型實(shí)現(xiàn)增加、修改或移植 控件樹結(jié)構(gòu),在一個(gè)屏幕頁面中組織復(fù)雜的控件布局,高效地實(shí)現(xiàn)整個(gè)系統(tǒng)的動(dòng)畫效果,使 應(yīng)用程序擁有更具吸引力的界面,克服了界面控件不易相互包含以組成復(fù)雜的控件系統(tǒng)的 技術(shù)問題。實(shí)施例三圖5是本發(fā)明實(shí)施例一種界面控件樹創(chuàng)建系統(tǒng)結(jié)構(gòu)示意圖。所述系統(tǒng)包括基類創(chuàng)建模塊、控件類創(chuàng)建模塊、控件樹創(chuàng)建模塊;基類創(chuàng)建模塊,與控件類創(chuàng)建模塊相連,用于創(chuàng)建界面控件基類UIBase及其操作 函數(shù)、動(dòng)畫控制函數(shù)、標(biāo)簽狀態(tài)、當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)和繪制動(dòng)畫內(nèi)容函數(shù);所述操作函數(shù)包括加入、獲取、查找子節(jié)點(diǎn)、兄弟節(jié)點(diǎn)、父節(jié)點(diǎn)的函數(shù);所述動(dòng)畫控制函數(shù)包括普通動(dòng)畫控制函數(shù)和內(nèi)部動(dòng)畫控制函數(shù),普通動(dòng)畫控制函 數(shù)和內(nèi)部動(dòng)畫控制函數(shù)可同時(shí)運(yùn)行;所述普通動(dòng)畫控制函數(shù)指整個(gè)控件節(jié)點(diǎn)相對其兄弟節(jié)點(diǎn)的運(yùn)動(dòng),包括平移、縮放、 旋轉(zhuǎn);所述內(nèi)部動(dòng)畫控制函數(shù)指控件內(nèi)的變化,包括走馬燈字符的移動(dòng);普通動(dòng)畫控制函數(shù)和內(nèi)部動(dòng)畫控制函數(shù),分別包括動(dòng)畫開啟函數(shù)、暫停動(dòng)畫函數(shù)、 繼續(xù)動(dòng)畫函數(shù)、結(jié)束動(dòng)畫函數(shù);所述的動(dòng)畫開啟函數(shù)StartAnimation,用于獲取控件節(jié)點(diǎn)的動(dòng)畫效果類型、動(dòng)畫 時(shí)長、動(dòng)畫結(jié)束后是否刪除節(jié)點(diǎn),控件節(jié)點(diǎn)的初始位置和大小,控件節(jié)點(diǎn)動(dòng)畫結(jié)束時(shí)節(jié)點(diǎn)的 位置和大小,控件節(jié)點(diǎn)結(jié)束時(shí)是否回調(diào)通知控件節(jié)點(diǎn)的動(dòng)畫觀察者;所述的動(dòng)畫效果類型是按照產(chǎn)品需求事先定義的效果;所述的動(dòng)畫觀察者指關(guān)注該控件節(jié)點(diǎn)動(dòng)畫過程的對象(包括程序中的其他對象、 其他的控件節(jié)點(diǎn)),事先將觀察者對象的動(dòng)畫回調(diào)接口設(shè)定給控件節(jié)點(diǎn),當(dāng)控件節(jié)點(diǎn)的動(dòng)畫 狀態(tài)發(fā)生改變時(shí),通過事先設(shè)置的回調(diào)接口函數(shù)通知調(diào)用該控件節(jié)點(diǎn)者,通過回調(diào)接口,可 以依次連續(xù)執(zhí)行多個(gè)類型的動(dòng)畫;所述的標(biāo)簽狀態(tài)記錄節(jié)點(diǎn)動(dòng)畫的狀態(tài),包括動(dòng)畫播放、動(dòng)畫暫停和動(dòng)畫結(jié)束;動(dòng)畫開啟函數(shù)設(shè)置標(biāo)簽狀態(tài)為“動(dòng)畫播放”,播放幀數(shù)全部完成后,標(biāo)簽狀態(tài)就被 設(shè)置“動(dòng)畫結(jié)束”;暫停動(dòng)畫函數(shù),將標(biāo)簽狀態(tài)置為“動(dòng)畫暫?!保焕^續(xù)動(dòng)畫函數(shù),將標(biāo)簽狀態(tài)置為“動(dòng)畫播放”;結(jié)束動(dòng)畫函數(shù),將標(biāo)簽狀態(tài)置為“動(dòng)畫結(jié)束”;所述當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)包括準(zhǔn)備控件節(jié)點(diǎn)的位置、大小、形狀、顏色、透明 度,含普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù);所述繪制動(dòng)畫內(nèi)容函數(shù)指繪制控件節(jié)點(diǎn)的動(dòng)畫效果的函數(shù);所述的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)Pr印areAFrameOf Animat ion、普通動(dòng)畫內(nèi)容準(zhǔn)備 函數(shù)GenAFrame、內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenAFrame為虛函數(shù),可以修改和增加新的動(dòng)畫效 果類型;
所述的繪制動(dòng)畫內(nèi)容函數(shù)Draw為純虛函數(shù);控件類創(chuàng)建模塊,與基類創(chuàng)建模塊和控件樹創(chuàng)建模塊相連,用于創(chuàng)建派生 于界面控件基類UIBase的具體控件類,如圖2,包括動(dòng)畫繪制節(jié)點(diǎn)UlView、界面 容器控件UIBox和界面控件節(jié)點(diǎn),并創(chuàng)建動(dòng)畫繪制節(jié)點(diǎn)UlView的定時(shí)器回調(diào)函數(shù) AnimationTimerCallBack ;所述的界面容器控件UIBox是包含界面控件節(jié)點(diǎn)的一個(gè)容器類;所述界面控件節(jié)點(diǎn)包括界面圖片Ullmage、界面標(biāo)簽UILable、界面網(wǎng)格UIGrid、 界面走馬燈UIMarquee ;所述動(dòng)畫繪制節(jié)點(diǎn)UlView在動(dòng)畫開啟函數(shù)StartAnimation被調(diào)用時(shí)開啟一個(gè)時(shí) 間周期為50-125毫秒或80毫秒的動(dòng)畫定時(shí)器,動(dòng)畫定時(shí)器每到一個(gè)時(shí)間周期回調(diào)一次動(dòng) 畫繪制節(jié)點(diǎn)UlView的定時(shí)器回調(diào)函數(shù);控件樹創(chuàng)建模塊,與控件類創(chuàng)建模塊相連,用于組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng) 建生成界面控件樹和類的對象;界面控件樹可以通過任意組合各控件節(jié)點(diǎn)的父子兄弟關(guān)系生成不同的界面控件 樹,以一個(gè)3級界面控件樹為例,如圖3,子根節(jié)點(diǎn)是動(dòng)畫繪制節(jié)點(diǎn)UlView對象,第二級節(jié)點(diǎn) 是界面容器控件節(jié)點(diǎn)UIBox對象,第三級節(jié)點(diǎn)就是界面控件節(jié)點(diǎn)對象。本發(fā)明實(shí)施例中通過基類創(chuàng)建模塊創(chuàng)建基類UIBase及其操作函數(shù)、動(dòng)畫控制函 數(shù)和標(biāo)簽狀態(tài)、當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、繪制動(dòng)畫內(nèi)容函數(shù),通過控件類創(chuàng)建派生于界面 控件基類UIBase的具體控件類生成動(dòng)畫繪制節(jié)點(diǎn)UlView、界面容器控件UIBox和界面控件 節(jié)點(diǎn)以及動(dòng)畫繪制節(jié)點(diǎn)UlView的定時(shí)器回調(diào)函數(shù),通過控件樹創(chuàng)建模塊組合各控件節(jié)點(diǎn) 父子兄弟關(guān)系創(chuàng)建生成界面控件樹和類的對象,通過相互包含構(gòu)成復(fù)合控件,定義不同的 類、對象、和函數(shù)類型實(shí)現(xiàn)增加、修改或移植控件樹結(jié)構(gòu),通過事先設(shè)置的回調(diào)接口函數(shù)可 依次連續(xù)執(zhí)行多個(gè)類型的動(dòng)畫效果,動(dòng)畫繪制節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)被調(diào)用時(shí)開啟一個(gè)動(dòng)畫 定時(shí)器,根據(jù)移動(dòng)終端的性能確定動(dòng)畫定時(shí)器的時(shí)間周期,使得畫面均勻呈現(xiàn),克服了界面 控件不易相互包含以組成復(fù)雜的控件系統(tǒng)的技術(shù)問題。實(shí)施例四圖6是本發(fā)明實(shí)施例一種界面控件樹繪制系統(tǒng)結(jié)構(gòu)示意圖。所述系統(tǒng)包括動(dòng)畫開啟模塊、第一判斷模塊、定時(shí)模塊、回調(diào)模塊、第二判斷模 塊、繪制模塊;動(dòng)畫開啟模塊,與第一判斷模塊相連,用于運(yùn)行界面控件節(jié)點(diǎn)的動(dòng)畫開啟函數(shù) StartAnimation并向第一判斷模塊發(fā)送判斷父節(jié)點(diǎn)指令,接收第一判斷模塊的開啟指令并 運(yùn)行父節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)StartAnimation ;第一判斷模塊,與動(dòng)畫開啟模塊和定時(shí)模塊相連,用于接收動(dòng)畫開啟模塊發(fā)送的 判斷父節(jié)點(diǎn)指令并判斷界面控件節(jié)點(diǎn)是否存在父節(jié)點(diǎn),如果是,則向動(dòng)畫開啟模塊發(fā)送開 啟指令,如果否(即當(dāng)前界面控件節(jié)點(diǎn)是根節(jié)點(diǎn)),則向定時(shí)模塊發(fā)送定時(shí)指令;定時(shí)模塊,與第一判斷模塊、第二判斷模塊和回調(diào)模塊相連,用于接收第一判斷模 塊發(fā)送的定時(shí)指令并開啟一個(gè)時(shí)間周期為50-125毫秒或80毫秒的動(dòng)畫定時(shí)器,動(dòng)畫定時(shí) 器每到一個(gè)時(shí)間周期向回調(diào)模塊發(fā)送一次回調(diào)指令,接收第二判斷模塊發(fā)送的停止定時(shí)指 令并停止定時(shí)器的運(yùn)行,接收第二判斷模塊發(fā)送的繼續(xù)定時(shí)指令并控制定時(shí)器每到一個(gè)時(shí)間周期向回調(diào)模塊發(fā)送一次回調(diào)指令;回調(diào)模塊,與定時(shí)模塊、第二判斷模塊和繪制模塊相連,用于接收定時(shí)模塊發(fā)送的 回調(diào)指令并調(diào)用定時(shí)器回調(diào)函數(shù)AnimationTimerCallBack,定時(shí)器回調(diào)函數(shù)調(diào)用根節(jié)點(diǎn)的 當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)Pr印areAFrameOf Animat ion,所述當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)包括 繪制普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenAFrame和繪制內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)GenlnnerAFrame,并 依次調(diào)用當(dāng)前界面控件節(jié)點(diǎn)所有子節(jié)點(diǎn)的繪制幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù),當(dāng)所有節(jié)點(diǎn)的繪制幀 動(dòng)畫內(nèi)容準(zhǔn)備就緒后,向繪制模塊發(fā)送繪制指令,同時(shí)向第二判斷模塊發(fā)送判斷動(dòng)畫結(jié)束 指令;第二判斷模塊,與回調(diào)模塊和定時(shí)模塊相連,用于接收回調(diào)模塊發(fā)送的判斷動(dòng)畫 結(jié)束指令并判斷界面控件節(jié)點(diǎn)的標(biāo)簽狀態(tài)是否都為“動(dòng)畫結(jié)束”,如果是,則向定時(shí)模塊發(fā) 送停止定時(shí)指令,則整個(gè)動(dòng)畫過程已完成;如果否,則向定時(shí)模塊發(fā)送繼續(xù)定時(shí)指令;繪制模塊,與回調(diào)模塊相連,用于接收回調(diào)模塊發(fā)送的繪制指令,并調(diào)用根節(jié)點(diǎn)的 繪制準(zhǔn)備函數(shù)DrawNow繪制整顆界面控件樹的動(dòng)畫效果;所述的繪制準(zhǔn)備函數(shù)DrawNow將調(diào)用動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制動(dòng)畫內(nèi)容函數(shù) Draw,動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制動(dòng)畫內(nèi)容函數(shù)Draw采用深度遍歷的方式調(diào)用所有界面 控件節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù)Draw,將整顆界面控件樹的動(dòng)畫效果繪制屏幕上;所述的繪制準(zhǔn)備函數(shù)DrawNow還可以通知操作系統(tǒng)(比如symbian系統(tǒng)控件的 DrawNow函數(shù),J2ME平臺的canvas類的r印aint函數(shù)),由操作系統(tǒng)回調(diào)至動(dòng)畫繪制節(jié)點(diǎn) UlView的繪制動(dòng)畫內(nèi)容函數(shù)Draw,在動(dòng)畫繪制節(jié)點(diǎn)UlView的繪制動(dòng)畫內(nèi)容函數(shù)Draw中采 用深度遍歷的方式將整顆界面控件樹的動(dòng)畫效果繪制屏幕上。本發(fā)明實(shí)施例中通過動(dòng)畫開啟模塊運(yùn)行界面控件節(jié)點(diǎn)的動(dòng)畫開啟函數(shù),通過第一 判斷模塊判斷控件節(jié)點(diǎn)是否存在父節(jié)點(diǎn),如果存在父節(jié)點(diǎn)則動(dòng)畫開啟模塊運(yùn)行父節(jié)點(diǎn)的動(dòng) 畫開啟函數(shù)直到運(yùn)行根節(jié)點(diǎn)的動(dòng)畫開啟函數(shù),由定時(shí)模塊開啟一個(gè)時(shí)間周期為50-125毫 秒或80毫秒的動(dòng)畫定時(shí)器,動(dòng)畫定時(shí)器每到一個(gè)時(shí)間周期通知回調(diào)模塊調(diào)用定時(shí)器回調(diào) 函數(shù),并依次調(diào)用當(dāng)前控件節(jié)點(diǎn)所有子節(jié)點(diǎn)的繪制幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù),所有節(jié)點(diǎn)都準(zhǔn)備 就緒了繪制幀動(dòng)畫內(nèi)容后向繪制模塊發(fā)送繪制指令進(jìn)行幀動(dòng)畫的繪制,同時(shí)向第二判斷模 塊發(fā)送判斷動(dòng)畫結(jié)束指令,第二判斷模塊判斷界面控件節(jié)點(diǎn)的標(biāo)簽狀態(tài)是否都為“動(dòng)畫結(jié) 束”,如果是,則向定時(shí)模塊發(fā)送停止定時(shí)指令則整個(gè)動(dòng)畫過程已完成,如果否向定時(shí)模塊 發(fā)送繼續(xù)定時(shí)指令繼續(xù)進(jìn)行回調(diào)、繪制過程,通過各個(gè)模塊相互包含構(gòu)成的復(fù)合控件類及 其函數(shù),按照產(chǎn)品需求事先定義各控件節(jié)點(diǎn)的動(dòng)畫效果,完成繪制界面控件樹的動(dòng)畫效果 的目的,同時(shí),通過事先設(shè)置的回調(diào)接口函數(shù)可依次連續(xù)執(zhí)行多個(gè)類型的動(dòng)畫效果,動(dòng)畫繪 制節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)被調(diào)用時(shí)開啟一個(gè)動(dòng)畫定時(shí)器,根據(jù)流媒體文件的頻率,確定動(dòng)畫 定時(shí)器的時(shí)間周期,使得畫面均勻呈現(xiàn),根據(jù)定義不同的類、對象、和函數(shù)類型實(shí)現(xiàn)增加、修 改或移植控件樹結(jié)構(gòu),在一個(gè)屏幕頁面中組織復(fù)雜的控件布局,高效地實(shí)現(xiàn)整個(gè)系統(tǒng)的動(dòng) 畫效果,使應(yīng)用程序擁有更具吸引力的界面,克服了界面控件不易相互包含以組成復(fù)雜的 控件系統(tǒng)的技術(shù)問題。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種界面控件樹的創(chuàng)建方法,其特征在于,所述方法包括以下步驟創(chuàng)建界面控件基類及其操作函數(shù)、動(dòng)畫控制函數(shù)和標(biāo)簽狀態(tài);創(chuàng)建界面控件基類的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)和繪制動(dòng)畫內(nèi)容函數(shù);創(chuàng)建派生于界面控件基類的具體控件類,包括動(dòng)畫繪制節(jié)點(diǎn)、界面容器控件和界面控件節(jié)點(diǎn);創(chuàng)建動(dòng)畫繪制節(jié)點(diǎn)的定時(shí)器回調(diào)函數(shù);組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng)建生成界面控件樹和類的對象。
2.如權(quán)利要求1所述的界面控件樹的創(chuàng)建方法,其特征在于,所述操作函數(shù)包括加 入、獲取、查找子節(jié)點(diǎn)、兄弟節(jié)點(diǎn)、父節(jié)點(diǎn)的函數(shù)。
3.如權(quán)利要求1所述的界面控件樹的創(chuàng)建方法,其特征在于,所述動(dòng)畫控制函數(shù)包括 普通動(dòng)畫控制函數(shù)和內(nèi)部動(dòng)畫控制函數(shù),普通動(dòng)畫控制函數(shù)和內(nèi)部動(dòng)畫控制函數(shù)可同時(shí)運(yùn) 行;所述普通動(dòng)畫控制函數(shù)指整個(gè)控件節(jié)點(diǎn)相對其兄弟節(jié)點(diǎn)的運(yùn)動(dòng),包括平移、縮放、旋轉(zhuǎn);所述內(nèi)部動(dòng)畫控制函數(shù)指控件內(nèi)的變化,包括走馬燈字符的移動(dòng); 普通動(dòng)畫控制函數(shù)和內(nèi)部動(dòng)畫控制函數(shù),分別包括動(dòng)畫開啟函數(shù)、暫停動(dòng)畫函數(shù)、繼續(xù) 動(dòng)畫函數(shù)、結(jié)束動(dòng)畫函數(shù);所述的動(dòng)畫開啟函數(shù),用于獲取控件節(jié)點(diǎn)的動(dòng)畫效果類型、動(dòng)畫時(shí)長、動(dòng)畫結(jié)束后是否 刪除節(jié)點(diǎn),控件節(jié)點(diǎn)的初始位置和大小,控件節(jié)點(diǎn)動(dòng)畫結(jié)束時(shí)節(jié)點(diǎn)的位置和大小,控件節(jié)點(diǎn) 結(jié)束時(shí)是否回調(diào)通知控件節(jié)點(diǎn)的動(dòng)畫觀察者;所述的標(biāo)簽狀態(tài)記錄節(jié)點(diǎn)動(dòng)畫的狀態(tài),包括動(dòng)畫播放、動(dòng)畫暫停和動(dòng)畫結(jié)束。
4.如權(quán)利要求1所述的界面控件樹的創(chuàng)建方法,其特征在于,所述當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn) 備函數(shù)包括準(zhǔn)備控件節(jié)點(diǎn)的位置、大小、形狀、顏色、透明度,含普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、內(nèi) 部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)。
5.如權(quán)利要求1或4所述的界面控件樹的創(chuàng)建方法,其特征在于,所述的當(dāng)前幀動(dòng)畫內(nèi) 容準(zhǔn)備函數(shù)、普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)為虛函數(shù),可以修改和增加新 的動(dòng)畫效果類型;所述的繪制動(dòng)畫內(nèi)容函數(shù)為純虛函數(shù)。
6.如權(quán)利要求1所述的界面控件樹的創(chuàng)建方法,其特征在于,所述界面控件節(jié)點(diǎn)包括 界面圖片、界面標(biāo)簽、界面網(wǎng)格、界面走馬燈。
7.如權(quán)利要求1所述的界面控件樹的創(chuàng)建方法,其特征在于,所述動(dòng)畫繪制節(jié)點(diǎn)在動(dòng) 畫開啟函數(shù)被調(diào)用時(shí)開啟一個(gè)時(shí)間周期為50-125毫秒或80毫秒的動(dòng)畫定時(shí)器,動(dòng)畫定時(shí) 器每到一個(gè)時(shí)間周期再次回調(diào)動(dòng)畫繪制節(jié)點(diǎn)的定時(shí)器回調(diào)函數(shù)。
8.如權(quán)利要求1所述的界面控件樹的創(chuàng)建方法,其特征在于,所述定時(shí)器回調(diào)函數(shù)包 括步驟定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)準(zhǔn)備繪制的動(dòng)畫內(nèi)容;當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)調(diào)用繪制普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)和繪制部動(dòng)畫內(nèi)容準(zhǔn)備函 數(shù),并依次調(diào)用當(dāng)前界面控件節(jié)點(diǎn)所有子節(jié)點(diǎn)的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù);判斷界面控件節(jié)點(diǎn)的標(biāo)簽狀態(tài)是否都為“動(dòng)畫結(jié)束”,如果是,則停止動(dòng)畫定時(shí)器,整個(gè) 動(dòng)畫過程已完成;如果否,則定時(shí)器回調(diào)函數(shù)調(diào)用繪制準(zhǔn)備函數(shù),由繪制準(zhǔn)備函數(shù)調(diào)用動(dòng)畫 繪制節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù),動(dòng)畫繪制節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù)采用深度遍歷的方式調(diào) 用所有界面控件節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù),繪制整顆界面控件樹的動(dòng)畫效果;動(dòng)畫定時(shí)器每隔一個(gè)時(shí)間周期,動(dòng)畫定時(shí)器再次回調(diào)動(dòng)畫繪制節(jié)點(diǎn)的定時(shí)器回調(diào)函數(shù) 以進(jìn)入步驟“定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)準(zhǔn)備繪制的動(dòng) 畫內(nèi)容”。
9.如權(quán)利要求8所述的界面控件樹的創(chuàng)建方法,其特征在于,步驟“如果否,則定時(shí)器 回調(diào)函數(shù)調(diào)用繪制準(zhǔn)備函數(shù),由繪制準(zhǔn)備函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù),動(dòng) 畫繪制節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù)采用深度遍歷的方式調(diào)用所有界面控件節(jié)點(diǎn)的繪制動(dòng)畫 內(nèi)容函數(shù),繪制整顆界面控件樹的動(dòng)畫效果”可以替換為步驟“如果否,則繪制準(zhǔn)備函數(shù)通 知操作系統(tǒng)并由操作系統(tǒng)回調(diào)至動(dòng)畫繪制節(jié)點(diǎn)的繪制動(dòng)畫內(nèi)容函數(shù),在動(dòng)畫繪制節(jié)點(diǎn)的繪 制動(dòng)畫內(nèi)容函數(shù)中采用深度遍歷的方式繪制整顆界面控件樹的動(dòng)畫效果”。
10.一種界面控件樹繪制方法,其特征在于,所述方法包括以下步驟 運(yùn)行界面控件節(jié)點(diǎn)的動(dòng)畫開啟函數(shù);判斷界面控件節(jié)點(diǎn)是否存在父節(jié)點(diǎn),如果是則進(jìn)入步驟“運(yùn)行界面控件節(jié)點(diǎn)的動(dòng)畫開 啟函數(shù)”,如果否(即當(dāng)前的控件節(jié)點(diǎn)是動(dòng)畫繪制節(jié)點(diǎn)),則動(dòng)畫繪制節(jié)點(diǎn)開啟動(dòng)畫定時(shí)器; 動(dòng)畫定時(shí)器每到一個(gè)時(shí)間周期,動(dòng)畫定時(shí)器回調(diào)動(dòng)畫繪制節(jié)點(diǎn)的定時(shí)器回調(diào)函數(shù); 定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù); 定時(shí)器回調(diào)函數(shù)調(diào)用動(dòng)畫繪制節(jié)點(diǎn)的繪制準(zhǔn)備函數(shù)繪制整顆界面控件樹的動(dòng)畫效果。
11.一種界面控件樹創(chuàng)建系統(tǒng),其特征在于,所述系統(tǒng)包括基類創(chuàng)建模塊,與控件類創(chuàng)建模塊相連,用于創(chuàng)建界面控件基類及其操作函數(shù)、動(dòng)畫控 制函數(shù)、標(biāo)簽狀態(tài)、當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)和繪制動(dòng)畫內(nèi)容函數(shù);控件類創(chuàng)建模塊,與基類創(chuàng)建模塊和控件樹創(chuàng)建模塊相連,用于創(chuàng)建派生于界面控件 基類的具體控件類,包括動(dòng)畫繪制節(jié)點(diǎn)、界面容器控件和界面控件節(jié)點(diǎn),并創(chuàng)建動(dòng)畫繪制 節(jié)點(diǎn)的定時(shí)器回調(diào)函數(shù);控件樹創(chuàng)建模塊,與控件類創(chuàng)建模塊相連,用于組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng)建生 成界面控件樹和類的對象。
12.—種界面控件樹繪制系統(tǒng),其特征在于,所述系統(tǒng)包括以下步驟動(dòng)畫開啟模塊,與第一判斷模塊相連,用于運(yùn)行界面控件節(jié)點(diǎn)的動(dòng)畫開啟函數(shù)并向第 一判斷模塊發(fā)送判斷父節(jié)點(diǎn)指令,接收第一判斷模塊的開啟指令并運(yùn)行父節(jié)點(diǎn)的動(dòng)畫開啟 函數(shù);第一判斷模塊,與動(dòng)畫開啟模塊和定時(shí)模塊相連,用于接收動(dòng)畫開啟模塊發(fā)送的判斷 父節(jié)點(diǎn)指令并判斷界面控件節(jié)點(diǎn)是否存在父節(jié)點(diǎn),如果是,則向動(dòng)畫開啟模塊發(fā)送開啟指 令,如果否(即當(dāng)前界面控件節(jié)點(diǎn)為根節(jié)點(diǎn)),則向定時(shí)模塊發(fā)送定時(shí)指令;定時(shí)模塊,與第一判斷模塊、第二判斷模塊和回調(diào)模塊相連,用于接收第一判斷模塊發(fā) 送的定時(shí)指令并開啟一個(gè)時(shí)間周期為50-125毫秒或80毫秒的動(dòng)畫定時(shí)器,動(dòng)畫定時(shí)器每 到一個(gè)時(shí)間周期向回調(diào)模塊發(fā)送一次回調(diào)指令,接收第二判斷模塊發(fā)送的停止定時(shí)指令并 停止定時(shí)器的運(yùn)行,接收第二判斷模塊發(fā)送的繼續(xù)定時(shí)指令并控制定時(shí)器每到一個(gè)時(shí)間周期向回調(diào)模塊發(fā)送一次回調(diào)指令;回調(diào)模塊,與定時(shí)模塊、第二判斷模塊和繪制模塊相連,用于接收定時(shí)模塊發(fā)送的回調(diào) 指令并調(diào)用定時(shí)器回調(diào)函數(shù),定時(shí)器回調(diào)函數(shù)調(diào)用根節(jié)點(diǎn)的當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù),所 述當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)包括繪制普通動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)和繪制內(nèi)部動(dòng)畫內(nèi)容準(zhǔn)備函 數(shù),并依次調(diào)用當(dāng)前控件節(jié)點(diǎn)所有子節(jié)點(diǎn)的繪制幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù),當(dāng)所有節(jié)點(diǎn)的繪制 幀動(dòng)畫內(nèi)容準(zhǔn)備就緒后,向繪制模塊發(fā)送繪制指令同時(shí)向第二判斷模塊發(fā)送判斷動(dòng)畫結(jié)束 指令;第二判斷模塊,與回調(diào)模塊和定時(shí)模塊相連,用于接收回調(diào)模塊發(fā)送的判斷動(dòng)畫結(jié)束 指令并判斷界面控件節(jié)點(diǎn)的標(biāo)簽狀態(tài)是否都為“動(dòng)畫結(jié)束”,如果是,則向定時(shí)模塊發(fā)送停 止定時(shí)指令,則整個(gè)動(dòng)畫過程已完成;如果否,則向定時(shí)模塊發(fā)送繼續(xù)定時(shí)指令;繪制模塊,與回調(diào)模塊相連,用于接收回調(diào)模塊發(fā)送的繪制指令,并調(diào)用根節(jié)點(diǎn)的繪制 準(zhǔn)備函數(shù)繪制整顆界面控件樹的動(dòng)畫效果。
13.—種包括如權(quán)利要求11所述界面控件樹創(chuàng)建系統(tǒng)的移動(dòng)終端。
14.一種包括如權(quán)利要求12所述界面控件樹繪制系統(tǒng)的移動(dòng)終端。
全文摘要
本發(fā)明公開一種界面控件樹的創(chuàng)建和繪制的方法、系統(tǒng)及移動(dòng)終端,本發(fā)明通過創(chuàng)建界面控件基類及其操作函數(shù)、動(dòng)畫控制函數(shù)和標(biāo)簽狀態(tài)、當(dāng)前幀動(dòng)畫內(nèi)容準(zhǔn)備函數(shù)、繪制動(dòng)畫內(nèi)容函數(shù),創(chuàng)建派生于界面控件基類的具體控件類生成動(dòng)畫繪制節(jié)點(diǎn)、界面容器控件和界面控件節(jié)點(diǎn),創(chuàng)建動(dòng)畫繪制節(jié)點(diǎn)的定時(shí)器回調(diào)函數(shù),組合各控件節(jié)點(diǎn)父子兄弟關(guān)系創(chuàng)建生成界面控件樹和類的對象,只有根節(jié)點(diǎn)動(dòng)畫繪制節(jié)點(diǎn)的繪制準(zhǔn)備函數(shù)和系統(tǒng)交互,完成繪制界面控件樹的動(dòng)畫效果的目的,通過動(dòng)畫定時(shí)器的時(shí)間周期,使得控件樹繪制效果均勻,克服了界面控件不易相互包含以組成復(fù)雜的控件系統(tǒng)的技術(shù)問題,在一個(gè)屏幕頁面中組織復(fù)雜的控件布局,高效地實(shí)現(xiàn)整個(gè)系統(tǒng)的動(dòng)畫效果。
文檔編號G06F9/44GK101980154SQ20101053063
公開日2011年2月23日 申請日期2010年11月2日 優(yōu)先權(quán)日2010年11月2日
發(fā)明者郭松 申請人:深圳市融創(chuàng)天下科技發(fā)展有限公司