google now 的喇叭动画很自然,很平滑。
反编译分析代码之后,发现原理很简单;
就是在view中画圆。
1 启动一个TimeAnimator 。设置成无限循环播放,利用它的 onTimeUpdate方法(每一帧回调)。
在每一帧时候去声音能量级中取出当前声音能量级。(能量级从0 到100)
存到mCurrentVolume字段。
为了防止每帧变化过大,设置了10的上限 。 每次变化和之前数值相差不超过10 。
然后 this.invalidate();
通知界面刷新。
2 在界面onDraw时候,
根据mCurrentVolume大小 画园。就可以了。
Google Now 喇叭动画实现原理
本文介绍Google Now应用中喇叭动画效果的具体实现方式。通过启动无限循环的TimeAnimator,并结合声音能量级的数据更新界面,使得动画既自然又平滑。在每一帧时获取当前声音的能量级并限制其变化幅度,以确保动画的流畅性。

被折叠的 条评论
为什么被折叠?



