查看ObjectAnimator的源码,会发现其实是继承自ValueAnimator,是ValueAnimator的一个封装。
ValueAnimator本身并不响应动画,也不能控制属性,它是一个数值发生器,产生动画过程中的各种数值,
将这些数值作用于控件属性,使整个动画过程能够精确地完成
下面这个小例子中,ValueAnimator 使int的数值在5000ms中由0变化到100,并且我们设置了数值变化的监听事件
每次数值变化的时候我们都在button上打印输出,注意,在没有设置插值器的时候,这里的int是均匀变化的
ValueAnimator animator=ValueAnimator.ofInt(0,100);
animator.setDuration(5000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Integer value= (Integer) animation.getAnimatedValue();
button.setText(""+value);
}
});
animator.start();
ValueAnimator animator=ValueAnimator.ofObject(new TypeEvaluator() {
@Override
/**
*fraction是一个 0-1 的时间因子,结合startValue和endValue以及各种计算方式(如各种插值器)
* 就可以生成各种各样的想要的数值序列
*/
public Object evaluate(float fraction, Object startValue, Object endValue) {
return null;
}
});
animator.start();
以上内容 整理自慕课网