專利名稱:一種實現(xiàn)切屏特效的方法及裝置的制作方法
技術領域:
本發(fā)明涉及切屏技術,特別涉及一種實現(xiàn)切屏特效的方法及裝置。
背景技術:
對于移動電話等終端設備來說,用戶通過移動電話軟件界面瀏覽相關信息時,經(jīng)常需要將當前瀏覽的界面切屏到另一需要瀏覽的界面,為了增加支持在同一操作系統(tǒng)平臺或不同操作系統(tǒng)平臺切屏過程中用戶的體驗,提出了切屏特效的方法,即在實現(xiàn)屏幕切換 (當前瀏覽界面至下一需要瀏覽的界面)的過程中,向用戶展示一些動畫效果,例如,百葉窗、縮放、漸顯漸隱、翻轉(zhuǎn)、翻頁等特效,從而通過切屏特效提高用戶的視覺感受、滿足用戶視覺多樣化的需求。現(xiàn)有實現(xiàn)切屏特效的方法包括以下三種技術方案,下面進行簡要說明一、動畫播放方式獲取當前屏幕包含的圖像信息,通過對獲取的圖像信息(特效對象)按照預先設置的策略進行圖像變換,例如,對圖像進行平移、縮放、旋轉(zhuǎn)等變換,形成順序待播放的圖像幀(Frame),也就是靜止的畫面,然后,在預先指定的位置利用幀畫面轉(zhuǎn)換動畫,即順序播放進行圖像變換形成的圖像幀,例如,每秒播放25幀圖像,與電影相類似。二、基于組件的游戲框架方式組件是指具有自身繪制邏輯和事件傳遞邏輯、采用數(shù)據(jù)和方法進行簡單封裝的特定容器,通過將預先設置的切屏特效代碼耦合到框架邏輯的組件中,動態(tài)改變當前界面窗口的Client繪制區(qū)域并通過動態(tài)地添加和刪除多個子組件來實現(xiàn)一些簡單特效。三、視圖(View)圖形變換預先定義一組用于圖形變換的類型、觸發(fā)時間、持續(xù)時間的指令,指令可以通過可擴展標記語言(XML,Extensible Markup Language)文件方式定義,例如,預先設置表示漸變透明度動畫效果的alpha、表示漸變尺寸伸縮動畫效果的scale、表示畫面轉(zhuǎn)換位置移動動畫效果的translate、表示畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果的 rotate等屬性值,也可以通過源代碼方式定義,通過設置各參數(shù)屬性值,程序沿著時間線執(zhí)行這些指令,根據(jù)設置的各參數(shù)屬性值對視圖里的對象進行圖形變換,從而可以實現(xiàn)切屏特效的動畫效果,即通過對用戶交互界面的視圖的內(nèi)容進行一系列的圖形變換,例如,平移、縮放、旋轉(zhuǎn)、透明度變換來實現(xiàn)動畫效果。由上述可見,現(xiàn)有的實現(xiàn)切屏特效的方法,對于技術方案一,由于只能在指定位置進行播放,無法實現(xiàn)漸變動畫;對于技術方案二,只能實現(xiàn)一些簡單的特效,而且,需要將切屏特效代碼耦合到框架邏輯中,移植性較差;對于技術方案三,需要編程人員不斷修改各參數(shù)屬性值才能實現(xiàn)切屏效果,靈活性不強、且不易移植。而且,上述三種技術方案,均只能對當前屏幕進行操作,沒有考慮切屏后的圖像數(shù)據(jù),使得在屏幕切換過程中,尤其是切屏至切屏后的界面時,動畫銜接不流暢、切屏特效效果較差,對用戶視覺造成極大的沖擊,從而影響用戶體驗。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提出一種實現(xiàn)切屏特效的方法,增強切屏特效效果、提高用戶體驗。本發(fā)明的另一目的在于提出一種實現(xiàn)切屏特效的裝置,增強切屏特效效果、提高用戶體驗。為達到上述目的,本發(fā)明提供了一種實現(xiàn)切屏特效的方法,該方法包括預先設置切屏特效類型對應的切屏特效對象模板信息;獲取當前圖層位像信息以及切屏后圖層位像信息,并存儲至切屏特效對象模板;根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放。所述獲取當前圖層位像信息以及切屏后圖層位像信息具體包括通過抓圖軟件以及圖像識別軟件獲取當前屏幕對應的位像信息;根據(jù)用戶輸入的獲取切屏后屏幕的指令,通過解析用戶指令,調(diào)用相應函數(shù)從后臺獲取用戶指令對應的切屏后屏幕中的位像信息。所述根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息具體包括切屏特效對象模板根據(jù)設置的播放幀數(shù)生成對應的位圖遮罩子模板,每一位圖遮罩子模板對應一幀圖像,用于對當前圖層位像以及切屏后圖層位像進行遮罩處理;根據(jù)預先設置的位圖遮罩策略設置位圖遮罩子模板中的位圖遮罩區(qū)域,確定位圖遮罩區(qū)域映射的當前圖層位像以及切屏后圖層位像。所述根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放具體包括接收切屏指令,根據(jù)切屏特效對象模板信息中的位圖遮罩信息對切屏特效對象模板中的位圖遮罩子模板進行遮罩處理;根據(jù)存儲的位圖布局信息對遮罩處理的位圖遮罩子模板進行變換生成待播放圖像幀,按照預先設置的播放幀率進行播放。所述根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息具體包括獲取切屏前后屏幕包含的位圖數(shù)據(jù)信息;分別在位圖遮罩子模板中創(chuàng)建兩個圖層中包含的位圖以及對應的遮罩位圖,將當前屏幕的所有子孫控件繪制到當前的位圖層中,將切屏后屏幕顯示的內(nèi)容截屏并保存到切屏后圖層的位圖中。所述根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放具體包括將創(chuàng)建好的兩個圖層插入到動畫播放隊列中;根據(jù)接收的枚舉值從預先存儲的枚舉值與切屏特效類型的映射關系中獲取該傳輸?shù)拿杜e值對應的切屏特效類型;調(diào)用預先設置的對應切屏特效類型的構造函數(shù)構造動畫播放隊列中的圖層,形成實例化切屏效果對象;將生成的切屏特效對象作為成員對象加入到圖層對象的數(shù)據(jù)結構中;啟動動畫播放引擎的播放接口,循環(huán)地對數(shù)據(jù)結構中的前后兩個圖層的位圖進行繪制;根據(jù)位圖布局信息矩陣對繪制的圖層進行運算;根據(jù)動態(tài)輸入的幀率參數(shù)調(diào)節(jié)切屏動畫播放速度。所述切屏特效類型包括淡入淡出、百葉窗、翻頁、翻轉(zhuǎn)以及棋盤。所述切屏特效對象模板信息包括位像信息、位圖遮罩信息以及位圖布局信肩、ο所述位像信息包括當前圖層位像信息以及切屏后圖層位像信息。所述位圖布局信息包含切屏特效對象模板的平移值信息、縮放值信息以及旋轉(zhuǎn)值信息。所述切屏特效播放參數(shù)包括切屏特效播放幀率以及播放幀數(shù)、切屏特效播放幀率及播放時間、或者,播放幀數(shù)及播放時間。采用獨占模式或中斷模式進行播放。一種實現(xiàn)切屏特效的裝置,該裝置包括切屏特效引擎以及動畫播放引擎,其中,切屏特效引擎,用于存儲預先設置的切屏特效類型對應的切屏特效對象模板信息,獲取當前圖層位像信息以及切屏后圖層位像信息,根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;動畫播放引擎,用于從切屏特效引擎讀取切屏特效對象模板信息,生成待播放圖像幀并進行播放。由上述的技術方案可見,本發(fā)明提供的一種實現(xiàn)切屏特效的方法及裝置,預先設置切屏特效類型對應的切屏特效對象模板信息;獲取當前圖層位像信息以及切屏后圖層位像信息,并存儲至切屏特效對象模板;根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放。這樣,通過切屏特效引擎來控制當前圖層以及切屏后圖層繪制的方式有較好的代碼移植性,可以很好應在各個平臺上,而無須對代碼做過多修改,動畫銜接流暢、切屏特效效果強,提高了用戶體驗。
圖1為本發(fā)明實施例實現(xiàn)切屏特效的方法流程示意圖。圖2為本發(fā)明實施例實現(xiàn)翻頁切屏效果的流程示意圖。圖3為本發(fā)明實施例基于圖1和圖2添加切屏特效對象的時序流程示意圖。圖4為本發(fā)明實施例實現(xiàn)切屏特效的裝置結構示意圖。圖5為本發(fā)明實施例切屏特效引擎與切屏特效對象的類圖關系結構示意圖。圖6為本發(fā)明實現(xiàn)切屏特效的裝置框架結構示意圖。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖及具體實施例對本發(fā)明作進一步地詳細描述。本發(fā)明實施例中,通過設置切屏特效引擎以及動畫播放引擎,在切屏特效引擎中根據(jù)用戶所需的切屏特效類型預先設置對應的切屏特效對象模板,并管理各切屏特效對象的生命周期。分別獲取當前屏幕(當前圖層)以及切屏后的屏幕(切屏后圖層)包含的圖像信息,根據(jù)獲取的圖像信息以及切屏特效對象模板設置圖層中的遮罩位圖,輸出至動畫播放引擎,動畫播放引擎內(nèi)部啟動定時器(Timer),根據(jù)預先設置的用于表示每秒播放幀數(shù)的幀率以及用于表示整個動畫播放的幀數(shù),對圖層中的遮罩位圖進行跨圖層渲染邏輯以形成播放動畫幀,從而實現(xiàn)各種切屏特效。圖1為本發(fā)明實施例實現(xiàn)切屏特效的方法流程示意圖。參見圖1,該流程包括步驟101,預先設置切屏特效類型對應的切屏特效對象模板信息;本步驟中,切屏特效類型包括淡入淡出、百葉窗、翻頁、翻轉(zhuǎn)、棋盤等,相對應地, 切屏特效對象模板包括淡入淡出模板、百葉窗模板、翻頁模板、翻轉(zhuǎn)模板以及棋盤模板。切屏特效對象模板信息由位像信息、位圖遮罩信息以及位圖布局信息組成。位像信息包括當前圖層位像信息以及切屏后圖層位像信息,其中, 當前圖層位像信息為切屏前屏幕包含的位像信息,切屏后圖層位像信息為切屏后屏幕包含的位像信息,需要在后續(xù)流程中獲取。位圖遮罩信息為對切屏特效對象模板進行遮罩處理所需的信息,例如,通過設置切屏特效對象模板顏色,舉例來說,設置為黑、白兩部分顏色,切屏特效對象模板的黑色部分,可以將該位置對應的切屏后圖層位像作透明處理以顯示切屏后圖層位像并遮擋住相應位置的當前圖層位像,其白色部分,顯示當前圖層位像并遮擋住相應位置的切屏后圖層位像。關于圖像的遮罩處理,具體可參見相關技術文獻,在此不再贅述。實際應用中,可將切屏特效對象模板中黑顏色部分的像素值設置為oxFFFFFFFF, 將切屏特效對象模板中白顏色部分的像素值設置為oxOOOOOOOO,后續(xù)中可根據(jù)該區(qū)域的像素值進行相應的遮罩處理。位圖布局信息包含切屏特效對象模板的平移值信息、縮放值信息、旋轉(zhuǎn)值信息等,可以根據(jù)實際需要預先設置。這樣,可以通過設置不同的位圖布局信息,從而實現(xiàn)不同的動畫效果,例如旋轉(zhuǎn)、移動、縮放等。實際應用中,為了使整型運算加快速度,本發(fā)明實施例中,設置支持256級的縮放,即縮放值等于256時表示1 1(不縮不放),小于256時表示縮小,大于256表示放大。位圖布局信息可以以矩陣形式存在,平移值、旋轉(zhuǎn)值、縮放值作為矩陣的三個度量
值,也就是說,可以進行平移、旋轉(zhuǎn)、縮放中的一種或任意組合切屏變換,每種切屏變換都對
應一次矩陣運算,其計算公式分別為 F-A =ΤΓ + 1式中,
Di為第i幀的平移值,i為自然數(shù);Fi為圖層的第i幀;Fn為圖層的總幀數(shù),i < Fn。φ = 2 ξ cos ( π -2 α )式中,φ為旋轉(zhuǎn)值;ξ為圖層鏡像翻轉(zhuǎn)系數(shù),可以預先設定;α為翻轉(zhuǎn)角度。β = wx ζ > > 1式中,β為縮放值;w為圖層幀寬,即設置的播放屏幕的寬度;ζ為圖層縮放粒度,可以預先設定;>>為移位操作;1為縮放級信息,本發(fā)明實施例中,采用256級縮放,則1 = 8。步驟102,獲取當前圖層位像信息以及切屏后圖層位像信息,并存儲至切屏特效對象模板;本步驟中,如果切屏特效對象模板中存儲有位像信息,則用獲取的位像信息更新存儲的位像信息。對于當前屏幕,可以直接通過抓圖軟件以及圖像識別軟件獲取該當前屏幕對應的位像信息,也可以直接通過調(diào)用操作系統(tǒng)底層接口獲取,對于切屏后的屏幕,可以根據(jù)用戶輸入的獲取切屏后屏幕的指令,通過解析用戶指令,調(diào)用相應函數(shù)從后臺獲取用戶指令對應的屏幕中的位像信息。例如,用戶需要在從當前的百度搜索界面切換到谷歌搜索界面的過程中進行動畫顯示,則可以通過抓圖軟件以及圖像識別軟件獲取百度搜索界面中包含的位像信息,然后,根據(jù)用戶輸入的谷歌,后臺對谷歌進行解析,獲取谷歌對應的統(tǒng)一資源定位器地址,并以后臺的方式,獲取谷歌搜索屏幕中的位像信息。步驟103,根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;本步驟中,切屏特效播放參數(shù)包括切屏特效播放幀率以及播放幀數(shù),切屏特效播放幀率表示以多快的速率播放圖像幀,播放幀數(shù)表示從當前屏幕切換至切屏后屏幕中需要播放的總幀數(shù),例如,設置每秒播放25幀,播放幀數(shù)為25。當然,實際應用中,切屏特效播放參數(shù)也可以是切屏特效播放幀率及播放時間,或者,播放幀數(shù)及播放時間。切屏特效對象模板根據(jù)設置的播放幀數(shù)生成對應的位圖遮罩子模板,例如,播放幀數(shù)為25,切屏特效類型為百葉窗,則百葉窗模板包含25個位圖遮罩子模板,每一位圖遮罩子模板對應一幀圖像,用于對當前圖層位像以及切屏后圖層位像進行遮罩處理。根據(jù)預先設置的位圖遮罩策略設置位圖遮罩子模板中的位圖遮罩區(qū)域,確定位圖遮罩區(qū)域映射的當前圖層位像以及切屏后圖層位像,位圖遮罩策略可根據(jù)切屏特效類型并結合現(xiàn)有相關技術手段實現(xiàn)。也就是說,根據(jù)預先設置的位圖遮罩策略可以確定該位圖遮罩子模板中哪些區(qū)域需要顯示當前圖層位像而遮罩相應區(qū)域的切屏后圖層位像,哪些區(qū)域需要顯示切屏后圖層位像而遮罩相應區(qū)域的當前圖層位像, 即對當前圖層位像以及切屏后圖層位像進行遮罩處理,并通過區(qū)域中的顏色值進行映射。實際應用中,也可以在獲取切屏前后屏幕包含的位圖數(shù)據(jù)信息后,初始化兩個圖層信息,獲取當前屏幕以及切屏后屏幕的寬、高尺寸用以確定后續(xù)的縮放及平移系數(shù),即分別在位圖遮罩子模板中創(chuàng)建兩個圖層中包含的位圖以及對應的遮罩位圖,將當前屏幕的所有子孫控件繪制到當前的位圖層中,將切屏后屏幕顯示的內(nèi)容截屏并保存到切屏后圖層的位圖中。步驟104,根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放。本步驟中,在接收到切屏指令后,根據(jù)切屏特效對象模板信息中的位圖遮罩信息對切屏特效對象模板中的位圖遮罩子模板進行遮罩處理,然后,根據(jù)存儲的位圖布局信息對遮罩處理的位圖遮罩子模板進行變換生成待播放圖像幀,按照預先設置的播放幀率進行播放。在切屏特效播放過程中,為了不影響主程序邏輯,可以將鍵盤輸入進行屏蔽,在切屏特效播放完成后再觸發(fā)開啟按鍵響應。切屏特效的播放模式包括獨占模式以及中斷模式,其中,獨占模式即播放程序主線程進入一個循環(huán),根據(jù)預先設置的幀率和幀數(shù)不斷刷新屏幕,直到播放結束;中斷模式采用單獨一個計時器線程對時間計數(shù),并根據(jù)預先設置的幀率和幀數(shù),每隔設定的時間,向播放程序主線程發(fā)送通知,播放程序主線程接到通知后刷新屏幕。本發(fā)明實施例中,結合操作系統(tǒng)平臺和程序框架的兼容考慮,采用了中斷模式進行切屏特效播放。如前所述,在初始化兩個圖層信息后,可以將創(chuàng)建好的圖層插入到動畫播放隊列中,動畫播放引擎輪詢動畫播放隊列并繪制相應動畫,即根據(jù)系統(tǒng)操作平臺調(diào)用的切屏特效類型參數(shù)結合預先設置的切屏特效對象模板,創(chuàng)建動畫播放隊列中具體的切屏特效對象。具體為首先根據(jù)系統(tǒng)操作平臺傳輸?shù)拿杜e值從預先存儲的枚舉值與切屏特效類型的映射關系中獲取該傳輸?shù)拿杜e值對應的切屏特效類型,枚舉值為用戶輸入的用于表示切屏特效類型的值,其計算公式為(CEffectEngineEEffectType)% (CEffectEngineEMaskLast)式中,CEffectEngine 為命名空間;EEffectType代表系統(tǒng)操作平臺傳入的效果類型;EMaskLast代表切屏特效引擎能提供的效果類型總數(shù);%表示取余。在獲取切屏特效類型后,再調(diào)用預先設置的對應切屏特效類型的構造函數(shù)實例化切屏效果對象,即進行位圖遮罩處理,不同的切屏效果對應不同的構造函數(shù)。然后將生成的切屏特效對象作為成員對象加入到圖層對象的數(shù)據(jù)結構中;緊接著通過啟動動畫播放引擎的播放接口,循環(huán)地對前后兩個圖層的位圖進行繪制,繪制順序先是頂層圖層及其遮罩圖層,緊接著是底層圖層及其遮罩圖層,遮罩位圖的形狀是由切屏特效類型決定,例如,用戶需要產(chǎn)生百葉窗的遮罩效果,則在遮罩位圖上繪制多CN 102541515 A
個黑白相間的矩形,繪制圖層時,遇到OxFFFFFFFF相素點就繪制切屏后圖層的圖像數(shù)據(jù), 遇到0x00000000就繪制當前圖層數(shù)據(jù),矩形的大小及間隔由程序控制,也可通過偽隨機算法產(chǎn)生,然后定時器時鐘會定時的對矩形區(qū)域進行縮放,從而對下一個圖層產(chǎn)生百葉窗效^ ο在每一次渲染輸出之前,根據(jù)位圖布局信息矩陣對繪制的圖層作一次全局運算, 位圖布局信息矩陣為圖層的位圖數(shù)據(jù)布局信息,由一個二維數(shù)組表示,進行矩陣運算的參數(shù)包括平移值、旋轉(zhuǎn)值、縮放值,每個參數(shù)的計算方式如前所述,在此不再贅述,以對圖片偏移量和遮罩圖進行運算后進行播放,并可以通過外部的外部調(diào)用接口,動態(tài)輸入幀率參數(shù),利用幀率來調(diào)節(jié)切屏動畫播放速度,這樣便能夠很方便地實現(xiàn)動畫播放速度的變化。以下以以實現(xiàn)翻頁切屏效果,即在顯示新圖層(切屏后圖層)圖像之前,將舊圖層 (當前圖層)圖像翻開一頁書的方式進行消除為例,對本發(fā)明實施例的實現(xiàn)切屏特效的方法進行具體描述。圖2為本發(fā)明實施例實現(xiàn)翻頁切屏效果的流程示意圖。參見圖2,該流程包括步驟201,將舊圖層等分成相等間隔的矩形區(qū)域;本步驟中,獲取當前屏幕位像信息,將舊圖層(當前圖層)區(qū)域分成等寬塊計算,以便于在位圖布局信息矩陣計算時同時運算奇偶數(shù)行/列,以便減少位圖布局信息矩陣的循環(huán)掃描次數(shù),提高運行效率。實際應用中,間距與刷屏幀數(shù)相關,如果刷屏幀數(shù)要求較高,可以將矩形區(qū)域條形寬度設大些,反之,則可以設置小些。本步驟中,涉及到的位圖布局信息矩陣運算參數(shù)表示如下
FxwX 二
F
η式中,χ為當前幀所占顯示屏幕的寬度,w為圖層幀寬,即設置的播放屏幕的寬度,等于圖層位圖每行的像素點個數(shù)。
Γ πAC 45* χ πa = 45 +-*-
w 180Φ = 2 ξ cos (31 -2 α )。步驟202,在舊圖層上繪制不規(guī)則的多邊形;本步驟中,以遮罩區(qū)域為多邊形為例,在舊圖層上繪制不規(guī)則的多邊形是為了形成一個不規(guī)則多邊形的遮罩區(qū)域,以便在后續(xù)繪制時,當繪制多邊形區(qū)域內(nèi)的圖層數(shù)據(jù)時, 將當前圖層數(shù)據(jù)忽略,即跳過不作處理,直接繪制切屏后圖層位圖數(shù)據(jù)。多邊形區(qū)域內(nèi)的顏色代表遮罩圖層的顏色,假設遮罩圖層的顏色為OxFFFFFFFF,則在繪制時,遮罩區(qū)域透過當前圖層而顯出切屏后圖層。步驟203,進行翻頁切屏處理;本步驟中,獲取切屏后圖層的位像信息,按照預先設置的策略,將切屏后圖層的圖像鏡像翻轉(zhuǎn)后再旋轉(zhuǎn)2 α,以將位圖布局信息矩陣的鏡像數(shù)據(jù)按照2 α的翻轉(zhuǎn)系數(shù)進行翻轉(zhuǎn)運算,以便形成一幀繪制位圖。即將一張圖片鏡像翻轉(zhuǎn)存到另一張圖片中,以備后續(xù)繪制所用。步驟204,繪制切屏后圖層;
本步驟中,動畫播放引擎繪制切屏后新的圖層,新圖層只需全屏刷新到屏幕上。步驟205,繪制舊圖層;本步驟中,動畫播放引擎繪制舊圖層,由于舊圖層有遮罩,因此,顏色為 OxFFFFFFFF的區(qū)域不會顯示,而直接透視到切屏后圖層。步驟206,返回執(zhí)行步驟201。本步驟中,再回到第一步,不斷縮小矩形區(qū)域?qū)挾冗M行繪制,根據(jù)幀率以及幀數(shù), 每間隔一定時間改變一次矩形區(qū)域?qū)挾纫詫崿F(xiàn)連續(xù)的翻頁切屏效果。圖3為本發(fā)明實施例基于圖1和圖2添加切屏特效對象的時序流程示意圖。參見圖3,該流程包括步驟301,系統(tǒng)操作平臺用戶輸入切屏效果類型參數(shù);步驟302,切屏特效引擎根據(jù)接收的切屏效果類型參數(shù)創(chuàng)建用于切屏效果的兩個圖層;步驟303,切屏特效引擎根據(jù)接收的切屏效果類型參數(shù)創(chuàng)建切屏特效對象;步驟302和步驟303為切屏特效引擎初始化兩個圖層的位圖數(shù)據(jù)信息,也就是創(chuàng)建兩個圖層的位圖及其遮罩圖層,在兩個圖層的位圖數(shù)據(jù)中,分別保存當前屏幕位圖數(shù)據(jù)以及切屏后圖層的位圖數(shù)據(jù)。步驟304,切屏特效引擎將創(chuàng)建好的兩個圖層輸出至動畫播放器的動畫播放隊列中;步驟305,動畫播放器監(jiān)聽用戶按鍵事件,并從刷屏定時器(Timer)中讀取定時器隊列中的播放任務列表(通過DoTick實現(xiàn));步驟306,動畫播放器根據(jù)播放任務列表,從動畫播放隊列中讀取相應圖層圖像信息,進行渲染;步驟307,動畫播放器播放動畫,并重復執(zhí)行渲染,直到定時器的時間片消耗完畢, 結束播放;步驟305至步驟307中,動畫播放器單獨占用一個線程,周期性地監(jiān)聽用戶按鍵事件并讀取Timer隊列中的播放任務列表,負責播放、渲染、停止兩個圖層的位圖和遮罩數(shù)據(jù),每執(zhí)行一次播放動作,就會動態(tài)地對圖層數(shù)據(jù)進行一次位圖布局信息矩陣運算,將計算后的圖層數(shù)據(jù)重新寫入到閃存的緩沖區(qū)中,并執(zhí)行刷屏動作更新屏幕,整個過程不斷重復執(zhí)行,直到時間片消耗完畢,結束播放。步驟308,動畫播放器釋放圖層資源。圖4為本發(fā)明實施例實現(xiàn)切屏特效的裝置結構示意圖。參見圖4,該裝置包括切屏特效引擎以及動畫播放引擎,其中,切屏特效引擎,用于存儲預先設置的切屏特效類型對應的切屏特效對象模板信息,獲取當前圖層位像信息以及切屏后圖層位像信息,根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;動畫播放引擎,用于從切屏特效引擎讀取切屏特效對象模板信息,生成待播放圖像幀并進行播放。本發(fā)明實施例中,動畫的播放可以由動畫播放引擎中一個獨立的類CAnimationPlayer $3 ^圖5為本發(fā)明實施例切屏特效引擎與切屏特效對象的類圖關系結構示意圖。參見圖5,以類的方式進行說明,切屏特效引擎與切屏特效對象的關系是一對多的關系, 當有新的切屏特效對象生成時,只需根據(jù)切屏特效類型(effectType)字段,在切屏特效引擎中產(chǎn)生對應的子結點,例如,淡入特效(CEffectFadeln)子結點、滑入左2右特效(CEffectSlideInLeft2Right)子結點、百葉窗特效(CEffectShutter)子結點以及滑入底2頂特效(CEffectSlidehBotton^Top)子結點等,每一子節(jié)點包括切屏特效類型 (effectType)字段整數(shù)型(int)以及切屏特效幀(+EffectFrame)。動畫播放引擎維持一個定時器來定期調(diào)用每個切屏特效對象對應的切屏特效幀(EffceFrame)方法。在切屏動畫中,每一切屏特效幀的圖層包含當前層的位圖、當前層的位圖遮罩以及當前圖層的位圖布局信息矩陣三個要素。在特效渲染(Render)輸出時,分別繪制當前圖層以及切屏后圖層上的位圖數(shù)據(jù), 同時,根據(jù)位圖遮罩和繪制平移值的不同,顯示出相應的切屏效果。圖6為本發(fā)明實現(xiàn)切屏特效的裝置框架結構示意圖。參見圖6,該裝置主要由切屏特效引擎(Effect Engine)和動畫播放引擎(Effect Player)兩個模塊構成。本發(fā)明實施例中,上層(操作系統(tǒng)平臺)應用通過調(diào)用動畫播放引擎的播放接口,觸發(fā)切屏特效引擎執(zhí)行切屏過程,從而使得上層不需要關注底層過多的實現(xiàn)細節(jié),實現(xiàn)了用戶接口(UI)與邏輯相分離,減化了耦合度。切屏特效引擎負責管理切屏特效對象的生命周期,例如,管理圖中淡入特效(CEffectFadeln)以及淡出特效(Ceffecti^deOut)兩個切屏特效對象的生命周期,當兩個切屏特效對象創(chuàng)建后,將其加入到動畫播放隊列中,最后,動畫播放定時器(Draw Timer)周期性地調(diào)用每個切屏特效對象的播放方法,將經(jīng)過位圖布局信息矩陣運算的圖層的位圖數(shù)據(jù)繪制到屏幕上。由上述可見,本發(fā)明實施例的實現(xiàn)切屏特效的方法及裝置,預先設置切屏特效類型對應的切屏特效對象模板信息;獲取當前圖層位像信息以及切屏后圖層位像信息,并存儲至切屏特效對象模板;根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放。這樣,通過切屏特效引擎來控制當前圖層以及切屏后圖層繪制的方式有較好的代碼移植性,可以很好應在各個平臺上,而無須對代碼做過多修改,動畫銜接流暢、切屏特效效果強,提高了用戶體驗。同時,可以在任意手機程序中實現(xiàn)屏幕切換的過渡特效,具有很好的跨平臺性,切屏特效引擎與操作系統(tǒng)平臺、程序框架完全獨立,切屏特效引擎的執(zhí)行流程與程序邏輯相對獨立,大大降低了跨平臺移植成本。而且,不需調(diào)用操作系統(tǒng)平臺相關的算法和接口,通過自身的特效運算和迭加算法, 從而實現(xiàn)了與具體操作系統(tǒng)平臺的解耦,與具體程序框架耦合度低,調(diào)用簡單,效率更高。 此外,只需要在調(diào)用切屏特效引擎時創(chuàng)建切屏特效對象,然后設置切屏特效類型,再啟動繪制調(diào)用接口便能立即觸發(fā)切屏特效播放,用較小的代價實現(xiàn)了產(chǎn)品較好的切屏效果以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種實現(xiàn)切屏特效的方法,其特征在于,該方法包括預先設置切屏特效類型對應的切屏特效對象模板信息;獲取當前圖層位像信息以及切屏后圖層位像信息,并存儲至切屏特效對象模板;根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放。
2.如權利要求1所述的方法,其特征在于,所述獲取當前圖層位像信息以及切屏后圖層位像信息具體包括通過抓圖軟件以及圖像識別軟件獲取當前屏幕對應的位像信息;根據(jù)用戶輸入的獲取切屏后屏幕的指令,通過解析用戶指令,調(diào)用相應函數(shù)從后臺獲取用戶指令對應的切屏后屏幕中的位像信息。
3.如權利要求1所述的方法,其特征在于,所述根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息具體包括切屏特效對象模板根據(jù)設置的播放幀數(shù)生成對應的位圖遮罩子模板,每一位圖遮罩子模板對應一幀圖像,用于對當前圖層位像以及切屏后圖層位像進行遮罩處理;根據(jù)預先設置的位圖遮罩策略設置位圖遮罩子模板中的位圖遮罩區(qū)域,確定位圖遮罩區(qū)域映射的當前圖層位像以及切屏后圖層位像。
4.如權利要求1所述的方法,其特征在于,所述根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放具體包括接收切屏指令,根據(jù)切屏特效對象模板信息中的位圖遮罩信息對切屏特效對象模板中的位圖遮罩子模板進行遮罩處理;根據(jù)存儲的位圖布局信息對遮罩處理的位圖遮罩子模板進行變換生成待播放圖像幀, 按照預先設置的播放幀率進行播放。
5.如權利要求1所述的方法,其特征在于,所述根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息具體包括獲取切屏前后屏幕包含的位圖數(shù)據(jù)信息;分別在位圖遮罩子模板中創(chuàng)建兩個圖層中包含的位圖以及對應的遮罩位圖,將當前屏幕的所有子孫控件繪制到當前的位圖層中,將切屏后屏幕顯示的內(nèi)容截屏并保存到切屏后圖層的位圖中。
6.如權利要求5所述的方法,其特征在于,所述根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放具體包括將創(chuàng)建好的兩個圖層插入到動畫播放隊列中;根據(jù)接收的枚舉值從預先存儲的枚舉值與切屏特效類型的映射關系中獲取該傳輸?shù)拿杜e值對應的切屏特效類型;調(diào)用預先設置的對應切屏特效類型的構造函數(shù)構造動畫播放隊列中的圖層,形成實例化切屏效果對象;將生成的切屏特效對象作為成員對象加入到圖層對象的數(shù)據(jù)結構中;啟動動畫播放引擎的播放接口,循環(huán)地對數(shù)據(jù)結構中的前后兩個圖層的位圖進行繪制;根據(jù)位圖布局信息矩陣對繪制的圖層進行運算; 根據(jù)動態(tài)輸入的幀率參數(shù)調(diào)節(jié)切屏動畫播放速度。
7.如權利要求1至6任一項所述的方法,其特征在于,所述切屏特效類型包括淡入淡出、百葉窗、翻頁、翻轉(zhuǎn)以及棋盤。
8.如權利要求7所述的方法,其特征在于,所述切屏特效對象模板信息包括位像信息、位圖遮罩信息以及位圖布局信息。
9.如權利要求8所述的方法,其特征在于,所述位像信息包括當前圖層位像信息以及切屏后圖層位像信息。
10.如權利要求7所述的方法,其特征在于,所述位圖布局信息包含切屏特效對象模板的平移值信息、縮放值信息以及旋轉(zhuǎn)值信息。
11.如權利要求7所述的方法,其特征在于,所述切屏特效播放參數(shù)包括切屏特效播放幀率以及播放幀數(shù)、切屏特效播放幀率及播放時間、或者,播放幀數(shù)及播放時間。
12.如權利要求7所述的方法,其特征在于,采用獨占模式或中斷模式進行播放。
13.一種實現(xiàn)切屏特效的裝置,其特征在于,該裝置包括切屏特效引擎以及動畫播放引擎,其中,切屏特效引擎,用于存儲預先設置的切屏特效類型對應的切屏特效對象模板信息,獲取當前圖層位像信息以及切屏后圖層位像信息,根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;動畫播放引擎,用于從切屏特效引擎讀取切屏特效對象模板信息,生成待播放圖像幀并進行播放。
全文摘要
本發(fā)明公開了一種實現(xiàn)切屏特效的方法及裝置。該方法包括預先設置切屏特效類型對應的切屏特效對象模板信息;獲取當前圖層位像信息以及切屏后圖層位像信息,并存儲至切屏特效對象模板;根據(jù)預先設置的切屏特效播放參數(shù)以及獲取的當前圖層以及切屏后圖層位像信息更新切屏特效對象模板中的位圖遮罩信息;根據(jù)讀取的切屏特效對象模板信息生成待播放圖像幀并進行播放。應用本發(fā)明,可以增強切屏特效效果、提高用戶體驗。
文檔編號G06F9/44GK102541515SQ20101058496
公開日2012年7月4日 申請日期2010年12月8日 優(yōu)先權日2010年12月8日
發(fā)明者羅春華, 賀志強, 鄭元坤, 馬亮 申請人:騰訊科技(深圳)有限公司