Android属性动画-Property Animation(三) 使用ValueAnimator完成动画

上一篇文章我们分析了ObjectAnimator的使用方法,这篇文章我们将分析ValueAnimator的使用方法。如果还不会使用ObjectAnimator的朋友可以看一下Android属性动画-Property Animation(二) 使用ObjectAnimator完成动画

在Android属性动画-Property Animation(一) 原理分析那篇文章中我们提到过,使用ValueAnimator的话必须要实现ValueAnimator.AnimatorUpdateListener接口,并且要在onAnimationUpdate()方法中手动更新属性值,并且调用invalidate()方法重画。

我们直接看一个例子


有了前面的基础,这个例子已经非常容易理解了。
不知道大家是否还有印象,在第一篇文章中我们说过,Evaluator是用来计算属性值的,它有IntEvaluator、FloatEvaluator、ArgbEvaluator、和 TypeEvaluator,其中前三个都非常好理解,都是计算对应类型数据的属性。而最后一个TypeEvaluator,是由我们自定义类型的,这个类型需要自己实现一个Bean实体类,还是直接看一个例子


首先,我们要创建一个封装了机器人横纵坐标的实体类
接着,是MainActivity
当然,也可以这样写
这两种写法是完全一样的。

注意:我想我还是有必要再强调一下,在ValueAnimator.AnimatorUpdateListener接口中我们重写了onAnimationUpdate()方法,在这个方法中我们修改了属性的值,我们需要调用Invalidate()方法来重画更新过属性值的视图。那为什么我们在上面例子中没有调用invalidate()方法呢,那是因为我们调用的setX()、setScaleY()等函数时,系统已经帮我们写好了invalidate()方法,不用我们自己再去调用了,但如果是我们自己写的setter方法,那一定要记得调用invalidate(),否则视图不会更新的,动画也不会动的!

最后附上一张Interpolators表格,系统自带的这些interpolators已经够我们用得了,基本没有机会让我们自己去写一个。
Android属性动画-Property Animation(三) 使用ValueAnimator完成动画_第1张图片

ValueAnimator我们已经分析完了,下一篇文章我们将分析如何使用AnimatorSet实现动画组合,如何给动画加监听,以及如何使用XML实现属性动画。



你可能感兴趣的:(android,animation,property,ValueAnimator,Android属性动画)