本發明涉及android(安卓系統)中自定義控件(自繪制控件)技術領域,具體說是一種音頻頻譜的動圖顯示進度條控件實現方法。即:在音頻頻譜的動圖中疊加顯示進度條控件的實現方法。
背景技術:
在android中,自定義控件,主要包括兩類:
第一類,組合自定義控件,是指使用系統提供的各種界面控件,通過自定義封裝成包括多個系統控件的自定義控件,代碼在內部處理各子控件的交互,簡化使用。
第二類,自繪制控件,是指通過繼承系統提供的各種界面控件,在控件的測量、布局、繪制三個方法中,使用代碼進行測量、繪制、處理交互事件的自定義控件。自繪制控件能提供比系統控件更新穎的界面、更豐富的交互方式。
頻譜動畫多在錄音或播放音頻時展示,通常是通過安卓自帶的visualizer類,獲得頻譜信息,得到一個byte數組。然后把這個byte數組轉換成point數組,最后再根據這個point數組繪制點,就行了。但這種現有頻譜動畫顯示效果缺乏美感,功能單一,人機交互過程有待進一步完善。
在播放音頻時還會在交互界面給出進度條,并且可以通過拖動進度條實現播放進度的相應控制。進度條通常是在獨立的區域進行顯示,同樣也是功能單一,人機交互過程有待進一步完善。
技術實現要素:
針對現有技術中存在的缺陷,本發明的目的在于提供一種音頻頻譜的動圖顯示進度條控件實現方法,在動畫顯示音頻頻譜數據的同時,在上面繪制和處理進度條的展示與交互,提供了更豐富的頻譜動畫顯示效果。
為達到以上目的,本發明采取的技術方案是:
一種音頻頻譜的動圖顯示進度條控件實現方法,其特征在于:首先基于view自定義控件,通過自定義處理頻譜繪制及進度條繪制,自定義處理觸摸與按鍵事件,實現頻譜動畫顯示與進度條的展示與交互,且音頻頻譜和進度條疊加顯示于同一區域中,
其中:
重載ondraw方法,實現頻譜數據動態顯示,同時進行播放進度及緩沖進度繪制,
重載ontouchevent方法,實現進度條拖動操作,
從而實現可拖動進度并且顯示音頻頻譜的控件。
在上述技術方案的基礎上,所述基于view自定義控件是指:基于view創建可視化進度條自定義控件,創建時初始化各自定義屬性變量;
所述各自定義屬性變量至少包括:
進度條控件相關的參數初始值,所述參數包括:最大值max、緩沖進度secondprogress、播放進度progress,
頻譜繪制或進度繪制用畫筆對象,
頻譜數據保存、計算用數值變量。
在上述技術方案的基礎上,初始化各自定義屬性變量,是在繼承view控件后,在其構造函數中,增加自定義功能所需使用的變量初始化。
在上述技術方案的基礎上,基于可視化進度條自定義控件,增加頻譜數據的讀取與計算方法;
具體包括:
一個用于清除頻譜數據的方法,
一個用于設置頻譜數據到控件中,并計算頻譜數據圖形數據,啟動循環繪制調用,實現頻譜數據動態繪制展現的方法。
在上述技術方案的基礎上,基于可視化進度條自定義控件,通過覆寫ontouchevent、onkeydown方法,實現進度的觸摸拖動或按鍵跳動;
具體包括:
通過ontouchevent方法,實現用戶拖動或點擊改變播放進度,
通過onkeydown方法,實現用戶點擊手機dpad按鍵改變播放進度。
在上述技術方案的基礎上,基于可視化進度條自定義控件,通過覆寫ondraw方法,實現背景、頻譜圖、緩沖進度、播放進度的繪制;
具體包括:
通過ondraw方法,實現控件界面的繪制,包括但不限于:默認設置的背景、頻譜當前計算后的圖形、當前更新的緩沖進度、當前播放進度。
在上述技術方案的基礎上,基于可視化進度條自定義控件,增加停止時頻譜緩慢下落消失動畫方法,實現開始與停止頻譜的升起與下落;
具體包括:
通過異步循環執行頻譜數據的計算,并在計算后更新繪制,實現頻譜數據的緩慢下落停止。
本發明所述的音頻頻譜的動圖顯示進度條控件實現方法,在動畫顯示音頻頻譜數據的同時,在上面繪制和處理進度條的展示與交互,提供了更豐富的頻譜動畫顯示效果。具有以下優點:
1、通過單一控件,實現了頻譜展現與進度條功能結合統一,具有占用空間小,進度條變化與頻譜動畫和諧統一的優點。
2、基于view控件,自定義實現測量、繪制二步驟,通過轉換頻譜數據為圖形曲線及坐標,繪制到界面上定時更新形成動畫效果,通過繪制進度條控件元素及通過處理觸摸與按鍵事件,實現進度條控件展示及交互。交互界面更具美感,更具個性化。
附圖說明
本發明有如下附圖:
圖1本發明的顯示效果示意圖一(僅頻譜及進度條區域)。
圖2本發明的顯示效果示意圖二(僅頻譜及進度條區域)。
圖3本發明的流程圖。
說明:圖1及圖2所示效果非彩圖,但實際實施時,該交互界面顯然可以是彩圖。圖1及圖2所示效果中頻譜和進度條的動圖及圖片效果顯然可以按需變化,而非僅能如圖1、2所示。故,該效果示意圖是為了直觀的說明本發明的技術方案,而非限定本發明的具體實施效果及實施方式。
具體實施方式
以下結合附圖對本發明作進一步詳細說明。
如圖1、2、3所示,本發明所述的音頻頻譜的動圖顯示進度條控件實現方法,首先基于view自定義控件,通過自定義處理頻譜繪制及進度條繪制,自定義處理觸摸與按鍵事件,實現頻譜動畫顯示與進度條的展示與交互,且音頻頻譜和進度條疊加顯示于同一區域中,參見圖1、2所示,
其中:
重載ondraw方法,實現頻譜數據動態顯示,同時進行播放進度及緩沖進度繪制,
重載ontouchevent方法,實現進度條拖動操作,
從而實現可拖動進度并且顯示音頻頻譜的控件。
安卓系統中,view定義了繪圖的基本操作,是所有圖形的基類,因此view是android中最基本的ui單元;ondraw方法用于實現繪圖;ontouchevent方法在view接收到了觸碰事件時會被調用。
其中:
所述基于view自定義控件是指:基于view創建可視化進度條自定義控件,創建時初始化各自定義屬性變量;
所述各自定義屬性變量至少包括:
進度條控件相關的參數初始值,所述參數包括:最大值max、緩沖進度secondprogress、播放進度progress,
頻譜繪制或進度繪制用畫筆對象,
頻譜數據保存、計算用數值變量。
初始化各自定義屬性變量,是在繼承view控件后,在其構造函數中,增加自定義功能所需使用的變量初始化。
更進一步,基于可視化進度條自定義控件,增加頻譜數據的讀取與計算方法;
具體包括:
一個用于清除頻譜數據的方法,
一個用于設置頻譜數據到控件中,并計算頻譜數據圖形數據,啟動循環繪制調用,實現頻譜數據動態繪制展現的方法。
更進一步,基于可視化進度條自定義控件,通過覆寫ontouchevent、onkeydown方法,實現進度的觸摸拖動或按鍵跳動;
具體包括:
通過ontouchevent方法,實現用戶拖動或點擊改變播放進度,
通過onkeydown方法,實現用戶點擊手機dpad按鍵改變播放進度。
更進一步,基于可視化進度條自定義控件,通過覆寫ondraw方法,實現背景、頻譜圖、緩沖進度、播放進度的繪制;
具體包括:
通過ondraw方法,實現控件界面的繪制,包括但不限于:默認設置的背景、頻譜當前計算后的圖形、當前更新的緩沖進度、當前播放進度。
更進一步,基于可視化進度條自定義控件,增加停止時頻譜緩慢下落消失動畫方法,實現開始與停止頻譜的升起與下落;
具體包括:
通過異步循環執行頻譜數據的計算,并在計算后更新繪制,實現頻譜數據的緩慢下落停止。
以下為一具體實施例。
步驟1,基于view創建visualizerkwprogressbar自定義控件,創建時初始化各自定義屬性變量;
步驟2,基于visualizerkwprogressbar增加updatevisualizer、clearvisualizers方法,實現頻譜數據的讀取與計算;
步驟3,基于visualizerkwprogressbar覆寫ontouchevent、onkeydown方法,實現進度的觸摸拖動或按鍵跳動;
步驟4,基于visualizerkwprogressbar覆寫ondraw方法,實現背景、頻譜圖、緩沖進度、播放進度的繪制;
步驟5,基于visualizerkwprogressbar增加停止時頻譜緩慢下落消失動畫方法,實現開始與停止頻譜的升起與下落;
更進一步,在步驟1中,初始化自定義屬性變量是指:初始化進度條控件相關的最大值max、緩沖進度secondprogress、播放進度progress初始值,初始化頻譜繪制、進度繪制用畫筆對象,初始化頻譜數據保存、計算用數值變量。
更進一步,在步驟2中,updatevisualizer用于設置頻譜數據到控件中,并計算頻譜數據圖形數據,啟動循環繪制調用,實現頻譜數據動態繪制展現,clearvisualizers用于清除頻譜數據。即:
updatevisualizer方法,是用于接收新的頻譜數據,更新繪制圖形的計算轉換方法。
clearvisualizers方法,是用于在停止動畫時,清除現有數據,恢復初始界面狀態方法。
更進一步,在步驟3中,通過ontouchevent方法,實現用戶拖動或點擊改變播放進度。通過onkeydown方法,實現用戶點擊手機dpad按鍵改變播放進度。即:
ontouchevent方法,是用于接收用戶屏幕觸摸事件,計算并處理用戶點擊或拖動操作的響應方法。
onkeydown方法,是用于接收用戶在實體按鍵上的點擊操作,進行進度的前進或后退的響應方法。
更進一步,在步驟4中,通過ondraw方法,實現控件界面的繪制,包括默認設置的背景、頻譜當前計算后的圖形、當前更新的緩沖進度、當前播放進度。
ondraw方法,是用于繪制控件界面,包括背景繪制、頻譜曲線動畫繪制、緩沖進度條繪制、播放進度條繪制。
更進一步,在步驟5中,通過異步循環執行頻譜數據的計算,并在計算后更新繪制,實現頻譜數據的緩慢下落停止。具體說:停止消失動畫方法,是使用循環更新減少頻譜數據值,實現頻譜圖形的下落消失停止動畫
本說明書中未作詳細描述的內容屬于本領域專業技術人員公知的現有技術。