Android 自訂錄音、播放動畫View,讓你的錄音浪起來

來源:互聯網
上載者:User

標籤:迴圈   nbsp   type   san   space   http   amp   for   方法   

最近公司項目有一個錄音的錄製和播放動畫需求,然後時間是那麼緊,那麼趕緊開擼。

 

先看 

 

嗯,然後大致就是這樣,按住錄音,然後有一個倒計時,最外層一個進度條,還有一個類似類比聲波的動畫效果(其實中間的波浪會根據聲音的大小浪起來的~)

 

2

實現思路

然後,我們適當的來分析一下這個錄音動畫的實現方式。這個肯定是通過自訂控制項,咱們來把這個效果完完全全畫出來。 


大致包括以下幾個點: 

1. 最外層的進度條,最坑的就是一開始的一個漸層的效果 
2. 然後進度條最前方是有一個點的(我肯定選擇用圖片來實現) 
3. 中間的波浪(關鍵是要隨著聲音的大小浪起來) 
4. 中間的倒計時

 

3

實現過程

 

1.畫最外層的圓

 

 

 

2.畫提示的文字

 

 

3.畫倒計時(靜止時間)

 

 

4.畫聲波

 

 

這邊代碼就不展開了,畫的有點煩,簡單說下,還需要自己體會哈。上面分隔線之前的說白了就是讓聲波動起來,也就是改變volume的值,然後後面有3個for迴圈。

 

第一個for迴圈是為了確定聲波水平線的位置,第二個是畫聲波,第三個是顏色的漸層。

 

5.畫外圈進度的那個點

 

我們先會個圖分析一下,如。A點就是起始座標,一開始我們的小圓點是隱藏的,如果不算padding的話,x=witdh/2,y=0; 


 
嗯,然後呢畫圖片我們用的是

canvas.drawBitmap(......);

 

 

 

那麼要知道,drawBitmap()這個方法畫的時候是我們圖片的左上方去畫到A點的,其實我們應該往左上方挪一點,才能讓圖片的中心真正意義上的和A點重合,對吧對吧,嗯,仔細思考一下。

 

然後繼續看上面那個圖,當我們A點隨著時間運動到B點之後,我們要算出B點的座標。

 

這邊用一下三角函數啦,我們設A到B,轉過的角度為α,設圓的半徑為r,那麼A到B其實橫向增加的距離應該就是

m = x+r*sin(α);n = y+r*cos(α);

那麼我們該圖片的所有代碼就是:

 

 

6.畫外邊的帶進度和帶漸層的大圓

 

我的實現方式很簡單,從我們的UI圖看出,外面的大圓在1/4進度的時候是漸層的,然後剩下的3/4圓其實都是一種顏色,對吧,那我就畫2個圓來實現這個效果唄。

 

當progress<90的時候,我們畫那個漸層的圓環,當>90的時候,我們同時畫出那個漸層的和純色的圓環(當progress的時候,這個時候其實那個漸層的圓環沒變化,只是純色的圓環一直在變)。

 

A是那個漸層的圓環,B是純色不變的圓環 

 

7.然後最後就剩下一個計時器了,還有那個上面一直出現的progress

 

 

8.最後就是提供各種介面,各種繪製和啟動機制了,最主要的還是上面的繪製方法。

 

比如你的自訂屬性

 

 

以及一切其餘自訂View的東西,對自訂View不熟的同學可以先去學習下怎麼自訂View(其實很簡單,新手不要怕),然後再去實現一些看上去挺棒的效果。

 

總結

 

嗯,大致就是這樣,對於公司這些動畫的需求我只想說其實你想要咋弄,都是沒問題的,最重要的就是時間!本身其實最後留給開發人員的時間就不多,然後如果還要加各種動畫,那不是天天加班的節奏麼~

 

:https://github.com/Blincheng/RecordView

Android 自訂錄音、播放動畫View,讓你的錄音浪起來

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.