上次我們使用Paint的RadialGradient實(shí)現(xiàn)了類似水波紋渲染的效果,這次我們來個(gè)更炫酷的,使用shader的梯度渲染來實(shí)現(xiàn)雷達(dá)掃描效果.這種場景之前迅雷的手機(jī)版好像有過這種效果,就是搜索附近的片子之類的.廢話不多說,老樣子,咱先看效果.這玩意不好錄,實(shí)際效果比現(xiàn)在看到的好得多,大家可以自己嘗試一下.

還是老樣子,自定義控件繼承自View重寫構(gòu)造方法,我們可能要自定義一些屬性.包括,雷達(dá)的半徑,有多少個(gè)環(huán)形,環(huán)形的顏色,以及梯度漸變的顏色起始值以及末尾值.所以在含有兩個(gè)參數(shù)的構(gòu)造中我們將這些值取出來:


我們對自定義控件做一個(gè)測量,確定我們要畫的環(huán)形的寬高.


第一步,先畫環(huán)形(無梯度漸變),也就是雷達(dá)的背景:

第二步,畫雷達(dá)掃描效果,給最大的圓環(huán)加入梯度渲染效果:

第三步,就是動(dòng)畫了,讓我們的掃描效果動(dòng)起來:
我們使用Handler來刷新效果:


這樣,一個(gè)雷達(dá)掃描效果就出來了.