google now 的喇叭動畫很自然,很平滑。
反編譯分析代碼之後,發現原理很簡單;
就是在view中畫圓。
1 啟動一個TimeAnimator 。設定成無限循環播放,利用它的 onTimeUpdate方法(每一幀回調)。
在每一幀時候去聲音能量級中取出目前聲音能量級。(能量級從0 到100)
存到mCurrentVolume字段。
為了防止每幀變化過大,設定了10的上限 。 每次變化和之前數值相差不超過10 。
然後 this.invalidate();
通知界面重新整理。
2 在界面onDraw時候,
根據mCurrentVolume大小 畫園。就可以了。