ValueAnimator(属性动画之ValueAnimator)
1.类(继承于Animator,此类为正在播放的动画提供一个简单的计时引擎,用于计算动画值,并设置目标对象。所有动画都使用同一个时钟。它运行在在自定义handler中, 以确保其属性改变发生在其UI线程上。)
my see:一个改变数值改变的类,提供不断变化的回调值,与view的各种set方法搭配,组成一种从值上的改变的属性动画。
2.类方法
- ofArgb (int... values):构造并返回在指定颜色值之间动画的一个ValueAnimator的对象。单个值,意味着对该值进行动画处理。但是, 在ValueAnimator对象中, 这通常并没有什么用, 因为对象无法确定动画的起始值 (不像 ObjectAnimator, 它可以从目标对象和正在进行动画的属性中导出该值)。因此, 通常应该有两个或多个值。
- ofFloat (float... values):构造并返回在指定浮点值之间动画的一个ValueAnimator的对象。单个值,意味着对该值进行动画处理。但是, 在ValueAnimator对象中, 这通常并没有什么用, 因为对象无法确定动画的起始值 (不像 ObjectAnimator, 它可以从目标对象和正在进行动画的属性中导出该值)。因此, 通常应该有两个或多个值。
- ofInt (int... values):构造并返回在指定整型值之间动画的一个ValueAnimator的对象。单个值,意味着对该值进行动画处理。但是, 在ValueAnimator对象中, 这通常并没有什么用, 因为对象无法确定动画的起始值 (不像 ObjectAnimator, 它可以从目标对象和正在进行动画的属性中导出该值)。因此, 通常应该有两个或多个值。
- ofobject (object... values):构造并返回在指定对象之间动画的一个ValueAnimator的对象。单个值,意味着对该值进行动画处理。但是, 在ValueAnimator对象中, 这通常并没有什么用, 因为对象无法确定动画的起始值 (不像 ObjectAnimator, 它可以从目标对象和正在进行动画的属性中导出该值)。因此, 通常应该有两个或多个值。
- pause ():暂停正在播放的动画。仅应在启动动画的同一线程上调用此方法。如果动画尚未
[started](http://www.zhdoc.net/android/reference/android/animation/Animator.html#isStarted())
或已结束, 则将忽略该调用。通过调用[resume()](http://www.zhdoc.net/android/reference/android/animation/Animator.html#resume())
来暂停动画。 - resume ():恢复暂停的动画, 使animator在暂停位置继续运行。仅应在启动动画的同一线程上调用此方法。对当前未暂停的动画的调用resume(),将被忽略。
- setCurrentFraction :设置动画的位置到指定的片段。应该介于0和动画的总片段之间, 包括任何重复。也就是说, 片段值0定位在动画开始处, 结尾的片段值为1, 并且在倒放animator的末尾重复一次, 值为2。如果动画还没有开始, 那么它被设置为这一片段后,不会向前推进;它只会将片段置为该值, 并根据此片段执行任何适当的操作。如果动画已经在运行, 则setCurrentFraction()将设置当前片段到此值, 并继续从该点播放。
[Animator.AnimatorListener](http://www.zhdoc.net/android/reference/android/animation/Animator.AnimatorListener.html)
事件不会因为改变了片段值而被调用;只有在动画运行时,才处理这些事件。 - setDuration (long duration):设置动画的长度。默认持续时间是300毫秒。
- setEvaluator:,用于计算此动画的动画值。系统将根据构造方法中的
startValue
和endValue
的类型自动为浮点或int计算赋值。但是, 如果这些值不是这些基本类型之一, 或者如果需要不同的计算 (例如, 对于表示颜色的int值是必要的), 则需要指派一个自定义计算。例如, 当在颜色值上运行动画动画时, 应使用[ArgbEvaluator](http://www.zhdoc.net/android/reference/android/animation/ArgbEvaluator.html)
来获取正确的RGB颜色插值。
3.示例代码(简单的改变textview的透明值)
final Button textView = findViewById(R.id.text_animotion);
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f, 0f);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (Float) valueAnimator.getAnimatedValue();
textView.setAlpha(value);
textView.invalidate();
}
});
valueAnimator.setDuration(5000);
valueAnimator.start();