google now 的喇叭动画很自然,很平滑。
反编译分析代码之后,发现原理很简单;
就是在view中画圆。
1 启动一个TimeAnimator 。设置成无限循环播放,利用它的 onTimeUpdate方法(每一帧回调)。
在每一帧时候去声音能量级中取出当前声音能量级。(能量级从0 到100)
存到mCurrentVolume字段。
为了防止每帧变化过大,设置了10的上限 。 每次变化和之前数值相差不超过10 。
然后 this.invalidate();
通知界面刷新。
2 在界面onDraw时候,
根据mCurrentVolume大小 画园。就可以了。