目录
说明
在一定时间间隔内,通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果。
value值关系到线程,请注意尽可能不要让它一直循环,即设置repeatCount为-1,
发现一个很好的一点,动画内部都进行了变量处理,不会导致runtimeException,
eg:ofInt(int... values)多个参数控制了时间片的分布
应用场景
只要是一段时间内值的变化对应的事情都能做,
一个实用的场景,下拉之后的回弹,每次下拉的距离都是不确定的,所以回弹的尺寸大小不是自己能决定的,这个时候就是value动画登场的时候,只要给它不同的参数即可。
代码
//int
ValueAnimator animator = ValueAnimator.ofInt(0, 100);
animator.setDuration(10000);
animator.setStartDelay(500);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
System.out.println(animation.getAnimatedValue());
if ((int)animation.getAnimatedValue() == 100) {
imageView.setVisibility(View.VISIBLE);
}
}
});
animator.start();
//float
ValueAnimator animator1 = ValueAnimator.ofFloat(0, 100, 200).setDuration(300);
animator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
System.out.println(animation.getAnimatedValue());
}
});
animator1.start();