新四季網

一種基於Android系統的GO圖像動畫引擎的製作方法

2023-08-06 02:07:21 1

專利名稱:一種基於Android系統的GO圖像動畫引擎的製作方法
技術領域:
本發明涉及一種基於Android系統的圖像動畫引擎,具體的說,是一種適用於Android系統上顯示各類動畫、圖形效果的繪圖裝置和方法。
背景技術:
Android系統是一種基於Linux開放性內核的作業系統,僅上市兩年便語句全球最受歡迎的智能設備的操作平臺。目前在Android平臺上對圖像或者動畫的顯示都是基於Android平臺自帶的UI引擎顯示,但Android系統自帶的UI引擎由於過度封裝,其動畫和視圖是一一對應的,在視圖較多的情況下,動畫佔用的內存開銷和引擎驅動計算的開銷增大,降低了顯示圖像或者動畫的速度。並且,系統自帶的UI引擎只能夠顯示簡單的、單位時間內同時運行數量少的二維動畫,並且其自帶的UI引擎的組件比較複雜,加大了開發人員自定義組件的難度。

發明內容
針對現有技術的不足,本發明的目的是要提供一種基於Android系統上工作更有效、使用更流暢的顯示圖像動畫的GO圖像動畫引擎。本發明的另外一個目的是要提供一種基於GO圖像動畫引擎的實現圖像動畫的方法。為實現上述目的,本發明的採用的技術方案如下一種基於Android系統的GO圖像動畫引擎,所述GO圖像動畫引擎包括一組件樹和一遍歷器,所述組件樹包含至少一組件,所述組件包括一公共數據區,用於存放該組件的公共數據;和一數據接口,提供方法供Android系統和/或該組件的父組件修改所述公共數據區中的公共數據;以及一圖形繪製接口,根據遍歷器訪問,Android系統根據公共數據區的公共數據在一繪圖線程中實現組件的繪製。進一步,所述組件還包括一動畫接口,所述動畫接口定期在一動畫線程中被所述遍歷器訪問,組件根據遍歷器對所述動畫接口的訪問計算並更新所述公共數據區的公共數據。進一步,所述組件樹的根結點的組件為一繼承Android系統視圖的UI視圖。進一步,所述GO圖像動畫引擎還包括一圖像工具庫,所述圖像工具庫包括一 M圖像和圖像特效類。為了實現本發明的另外一個目的,本發明採用的技術方案如下一種GO圖像動畫引擎顯示圖像動畫的實現方法,包括以下步驟a、初始化GO圖像動畫引擎,並啟動動畫線程;
b、組件根據遍歷器在動畫線程中定時對動畫接口的訪問判斷是否需要更新公共數據區中的公共數據,如果是,則更新數據並在遍歷器上做出數據更新標記;C、遍歷器完成對組件樹中所有組件的動畫接口的遍歷後,檢測是否存在所述數據更新標記,如果有,則由組件樹的根結點的組件要求Android系統從新繪製圖形。cUAndroid系統在一繪圖線程中通過遍歷器依次訪問組件樹中組件的圖形繪製接口重新繪製組件。進一步,所述初始化GO圖像動畫引擎包括配置GO圖像動畫引擎的遍歷器在動畫線程中訪問組件樹的周期;加入需要被訪問組件樹的根結點;向跟結點中添加需要被顯示的UI組件。進一步,在一個訪問周期內,如果遍歷器已經完成組件樹中所有組件的動畫接口的訪問,則動畫線程會進入休眠狀態。進一步,所述動畫線程從休眠狀態恢復後,如果檢測到停止信號,則進入停止狀態,從而使遍歷器停滯訪問所有組件的動畫接口。相對於現有技術,本發明所述的技術方案能夠非常流暢的同時運行大量各類複雜的圖像或者動畫,並且運行速度快,顯示更為流暢;其次基於GO圖像動畫引擎的組件簡單、方便,開發人員可以快速開發定義自己需要的任何組件,減少開發周期;最後,本技術方案還可以使用圖像工具包,開發人員不需要掌握及使用Android系統提供的繁瑣的畫布坐標變換以及畫筆設置操作,就能以簡單直觀的方式就可以達到期望的效果。為了充分地了解本發明的目的、特徵和效果,以下將結合附圖對本發明的構思、具體結構及產生的技術效果作進一步說明。


圖1是本發明所述GO圖像動畫引擎的結構示意圖;圖2是圖1中組件的結構示意圖;圖3是本發明所述GO圖像動畫引擎的工作方法流程圖;圖4是本發明所述GO圖像動畫引擎的實現動畫的流程圖;圖5是圖3中初始化的流程圖;圖6是圖像工具包的工作流程示意圖。圖中1-組件樹;11-組件;111-數據接口 ;112-圖形繪製接口 ;113-公共數據區;114-動畫接口 ;2-遍歷器。
具體實施例方式如圖1至圖2所示,一種基於Android系統的GO圖像動畫引擎,包括一組件樹1和遍歷組件樹1的遍歷器2。遍歷器2遍歷組件樹1中每一個組件11,來完成組件11的數據更新和繪製圖形。請參閱圖1,組件樹1由顯示在視圖上的各種組件11組成,組件11承託著顯示到屏幕上的繪圖組件,如屏幕上顯示的按鈕、文本等。這些組件11在組件樹1中如樹狀結構分布,一個組件11也可以包含著其他子組件。本實施例中,該組件樹1的根結點為一繼承於Android系統視圖類的UI視圖,並將該UI視圖作為組件樹的根結點實現與遍歷器2的接口。在具體的應用當中,開發者根據不同的需要向根結點如UI視圖添加各種需要被顯示的UI組件,以滿足UI設計要求。請參閱圖2,組件樹1中包含至少一個組件11,所述組件11包括數據接口 111和圖形繪製接口 112以及存放該組件11的公共數據的公共數據區113,公共數據區113存放組件11的公共數據,如組件的坐標、組件的長和寬等數據;組件11的數據接口 111用於提供方法給外部如Android系統或者該組件的父組件修改組件11的公共數據區113中存放的公共數據,Android系統根據遍歷器2對圖形繪製接口 112的訪問,調用公共數據在一圖形繪製線程對組件11進行繪製。組件11中還可包含一動畫接口 114,動畫接口 114在一動畫線程中被遍歷器2訪問。組件11根據遍歷器2的對動畫接口 114的訪問來計算和更新組件11公共數據區114中存放的公共數據。GO圖像動畫引擎還包括一圖像工具包,圖像工具包包括一 M圖像和圖像特效類,M圖像封裝了 Android系統提供的繁瑣的畫布坐標變換操作以及畫筆設置操作,封裝了引擎要顯示的圖片,並對外提供接口供所述圖像特效類調用。M圖像可以根據圖片的旋轉、縮放大小等屬性,調用畫布的矩陣變換方法及配置,最後調用畫布繪製原始位圖的方法,從而產生位圖的旋轉、縮放等效果。開發人員可以通過其簡單而直觀的調用接口來繪製圖片,M圖像的接口主要包括圖片錨點位置的X坐標值和Y坐標值;圖片水平方向和垂直方向是否鏡像翻轉的布爾值;圖片的縮放寬度和高度;圖片旋轉的角度;圖片最大尺寸的大小,即圖片包圍盒的大小;圖片的透明度;圖片的掩碼顏色以及圖片抗鋸齒效果質量。可以通過獲取該組件的各個屬性來設置標記,通過對標記的操作來設置和/或更改圖像實例的屬性。MImage被創建後,可以記錄傳入參數給各個屬性設置默認值。在操作MImage的時候,可以獲取以及設置各個屬性,如果有屬性被更改,則設置對應的標記。對於不同的屬性,可以提供不同的設置方法,例如,設置錨點可以用組合枚舉值(上、下、垂直居中、左、右)作為傳入參數;設置圖片的大小,可以用縮放比例作為傳入參數進行不等比例的縮放。以下結合附圖6詳細描述M圖像的工作過程。請參閱圖6,Android系統根據標準格式的位圖創建MImage對象(即圖片)後,將圖片封裝在M圖像之中,並對外提供接口供外部調用。遍歷器2遍歷該組件11的數據更新接口,MImage對象更新自身的數據設置對象的錨點位置(默認是屏幕的左上角)、設置對象在水平方向和/或垂直方向是否需要鏡像翻轉、設置圖片是否需要在水平和/或垂直方向縮放以及縮放的比例、設置圖片的旋轉角度(默認為0)、設置圖片的不透明度(默認為100%)、設置包圍盒的大小(默認為無)、完成更新這些數據後,如果這些設置有改變,則給遍歷器2發出「重新繪製圖形」的信號,遍歷器2將組件的「重新繪製圖形」的標記標誌後,組件就可以實現繪製圖形。M圖像組件調用Android系統方法繪製圖形,其中錨點在屏幕上的對應位置作為參數傳入。根據上述的設置,計算平移、旋轉、縮放的組合變換矩陣。如果上述設置中設置了包圍盒,則用矩陣對圖片中四個頂點進行變換,去變換後的點的包圍盒來計算和指定包圍盒的大小和比例,對矩陣做一個縮放變換,如果沒有指定包圍盒,則設置畫刷的不透明度、電泳系統繪製位圖的方法,將變換後的矩陣和畫刷作為參數傳入。完成這些操作後,M圖像判斷是否需要改變繪製,如果不需要,則結束;如果需要,則返回繪製圖像後返回上述步驟更新設置。圖像工具包的圖像特效類封裝了對圖像進行特效處理,如模糊、漸變或邊緣發光等圖像處理算法,在內部實現對圖像的每個像素進行計算的功能。對其輸入原始的bitmap 位圖對象,輸出就是經過處理的bitmap位圖對象。為了提高效率,通過Android的NDK原生開發工具包採用C/C++語言進行編程開發。組件在調用圖像工具包對圖像進行處理時, 組件以組件中的bitmap對象、資源ID、文件路徑、輸入流等作為參數,並通過M圖像的接口調用其方法對圖片進行處理;如果需要對圖片進行特效處理,則一圖片作為參數調用圖像工具包中的圖像特效類,接收其返回的新的圖片就可以得到圖片的特效效果。以下結合附圖3至附圖5詳細描述該基於Android系統的GO圖像動畫引擎的工作過程。請參閱圖3,圖3為本GO圖像動畫引擎的工作流程圖,GO圖像動畫引擎進入步驟 S301開始後,進入步驟S302。步驟S302 初始化GO圖像動畫引擎,並啟動動畫線程。請參閱圖5,創建UI引擎後,準備初始化引擎。初始化在步驟S501開始後,步驟如下S502 首先為圖像動畫引擎配置刷新周期時間的參數,該刷新周期時間即為UI引擎進入一段時間休眠後,重新刷新UI組件的時間間隔。 S503 創建一個繼承了 Android系統的視圖的UI視圖,並且將該UI視圖作為引擎的根結點和實現引擎的接口,加入引擎遍歷的列隊中,這樣引擎就可以不停的更新UI組件 11。S504 根據不同的設計要求,開發者可以向跟結點中添加各種需要被顯示的UI組件11,如按鈕、文本框等組件,以此滿足UI的設計要求。到此,引擎初始化完成,進入步驟 S505結束初始化。步驟S303 檢查需要被刷新的組件11。引擎完成初始化後,遍歷器2就會開始查看組件樹1中有沒有組件11,如果有就會一個一個遍歷所有的組件11,如果沒有則直接結
束O步驟S304 更新組件數據。由於每一個組件都存在自己特定的屬性,如文字的大小、顏色屬性等,這些屬性就構成了組件內部的數據。遍歷器2檢查到需要刷新的組件11 後,遍歷器2遍歷組件樹1根結點下的每一個組件,調用每一個組件11預先設計好的動畫接口 114。步驟S305 組件11根據遍歷器2對動畫接口 114的訪問判斷是否需要更新數據, 如果需要,則進入步驟S306,否則進入步驟S307.步驟S306 組件11根據自身情況更新數據公共數據區114中存放的公共數據,並在遍歷器2上做出相應的數據更新標記。步驟S307 檢測組件11的子組件。由於組件11在組件樹1中呈樹狀結構分布, 因此一個組件下面還可以包含若干子組件。遍歷器2完成組件11更新後,還需要根據檢測該組件11是否存在子組件,如果檢測到子組件,則返回步驟S304更新子組件的數據,否則進入步驟S308。步驟S308 在遍歷器2完成對組件樹1中所有組件11的動畫接口 114的遍歷後, 檢測是否存在數據更新標記,如果檢測到存在數據更新標記,則進入步驟S309,否則進入步驟 S3310。步驟S309 由組件樹1的根結點的組件即UI視圖組件要求Android系統重新繪製圖形。步驟S310 在一個訪問周期內,如果遍歷器2完成遍歷組件樹1中的所有組件的時間是在一個規定的周期內,則動畫線程進入休眠狀態直到下一個周期的到來。步驟S311 動畫線程檢測在下一個訪問周期到來後,檢測是否存在停止遍歷的信號,如果檢測到停止信號則進入步驟S312,停止動畫線程,否則重新從步驟S303開始完成下一次遍歷。值得注意的是,遍歷器2對動畫接口 114的訪問以及組件11計算和更新數據均在動畫線程中完成的。請參閱圖4,Android系統收到根結點繪製圖形的要求後,在一圖形繪製線程中根據遍歷器2對組件樹1中組件11的圖形繪製接口 112的訪問,根據公共數據區114中存放的公共數據重新繪製圖形,從而完成動畫的實現。以上詳細描述的GO圖像動畫引擎的工作過程,本引擎不需要將動畫與視圖進行一一對應,在視圖較多的時候能有效的降低內存開銷和引擎驅動計算。例如本GO圖像動畫引擎能夠在視圖容器(XPanel)的animate方法中更新各子控制項的屬性來減少內存使用和函數調用。相對於現有技術,本發明所述的技術方案能夠單位時間內同時應負大量各類複雜的二維和三維動畫運行,由於動畫坐標的計算與圖形的繪製分別處於不同的線程之中,動畫每幀運行速度可以更快、更好地使動畫能非常流暢的速度展現UI界面上,帶來更好的動畫效果。其次,該方法採用的組件簡單,開發人員可以快速的開發組件,降低了開發人員組件的開發難度,最後,該GO圖像動畫引擎還支持圖像模糊、漸變等效果,展示圖像的效果更豐_ ο以上詳細描述了本發明的較佳具體實施例,應當理解,本領域的普通技術無需創造性勞動就可以根據本發明的構思作出諸多修改和變化。因此,凡本技術領域中技術人員依本發明構思在現有技術基礎上通過邏輯分析、推理或者根據有限的實驗可以得到的技術方案,均應該在由本權利要求書所確定的保護範圍之中。
權利要求
1.一種基於Android系統的GO圖像動畫引擎,其特徵在於,所述GO圖像動畫引擎包括一組件樹和一遍歷器,所述組件樹包含至少一組件,所述組件包括一公共數據區,用於存放該組件的公共數據;和一數據接口,提供方法供Android系統和/或該組件的父組件修改所述公共數據區中的公共數據;以及一圖形繪製接口,通過遍歷器的訪問,Android系統根據公共數據區的公共數據在一繪圖線程中實現組件的繪製。
2.如權利要求1所述的圖像動畫引擎,其特徵在於,所述組件還包括一動畫接口,所述動畫接口定期在一動畫線程中被所述遍歷器訪問,組件根據遍歷器對所述動畫接口的訪問計算並更新所述公共數據區的公共數據。
3.如權利要求2所述的圖像動畫引擎,其特徵在於,所述組件樹的根結點的組件為一繼承Android系統視圖的UI視圖。
4.如權利要求1至3任一項所述的圖像動畫引擎,其特徵在於,所述GO圖像動畫引擎還包括一圖像工具庫,所述圖像工具庫包括一 M圖像和圖像特效類。
5.一種GO圖像動畫引擎顯示圖像動畫的實現方法,其特徵在於,包括以下步驟a、初始化GO圖像動畫引擎,並啟動動畫線程;b、組件根據遍歷器在動畫線程中定時對動畫接口的訪問判斷是否需要更新公共數據區中的公共數據,如果是,則更新數據並在遍歷器上做一數據更新標記;C、遍歷器完成對組件樹中所有組件的動畫接口的遍歷後,如果檢測存在所述數據更新標記,則由組件樹的根結點的組件要求Android系統從新繪製圖形;cUAndroid系統在一圖形繪製線程中根據遍歷器組件樹中組件的圖形繪製接口的訪問重新繪製組件。
6.如權利要求5所述的實現方法,其特徵在於,所述初始化GO圖像動畫引擎包括配置GO圖像動畫引擎的遍歷器在動畫線程中訪問組件樹的周期;加入需要被訪問組件樹的根結點;向跟結點中添加需要被顯示的UI組件。
7.如權利要求6所述的實現方法,其特徵在於,在一個訪問周期內,如果遍歷器已經完成組件樹中所有組件的動畫接口的訪問,則動畫線程會進入休眠狀態。
8.如權利要求7所述的實現方法,其特徵在於,所述動畫線程從休眠狀態恢復後,如果檢測到停止信號,則進入停止狀態,從而使遍歷器停滯訪問所有組件的動畫接口。
全文摘要
本發明公開了一種基於Android系統的GO圖像動畫引擎,屬於一種適用於Android系統上顯示各種動畫、圖形的繪製裝置和方法,包括一組件樹和一遍歷器,通過遍歷器對組件樹的遍歷更新組件的數據和繪製圖形。本發明所述的技術方案能夠更快、更好的將動畫和圖形以非常流暢的速度展現在UI界面上,帶來更好的動畫效果。
文檔編號G06F9/44GK102385515SQ20111032230
公開日2012年3月21日 申請日期2011年10月21日 優先權日2011年10月21日
發明者梁國盛 申請人:廣州市久邦數碼科技有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀