ValueAnimator 类用于产生属性动画值。它并不会把值应用到要添加动画的对象上因此我们需要自行监听由它产生的值然后根据自己的需求把值应用到要添加动画的对象上。ValueAnimator 可以对int、float、颜色以及自定义类型的值进行计算。使用用 ValueAnimator 的工厂方法ofFloat()、ofInt()、ofObject()等创建对象方法的参数指定动画的路径。例如ofFloat(0f, 100f, 50f)就是指定动画的值从0f开始经过100f最后到50f结束当然也可以通过new ValueAnimator()创建对象再用setFloatValues()指定动画路径ofFloat()源码就是这么干的setDuration()指定动画时长若在动画运行中调用setDuration()动画会继续运行且剩余运行时长 新时长 - 已运行时长如果已运行时长大于新时长则动画结束start()启动动画若动画正在运行或已经结束再调用start()会使动画从头重新开始setStartDelay()指定动画在调用start()之后延迟多长时间再开始运行setCurrentFraction()修改动画进度动画运行前setCurrentFraction()会使动画一start()就马上从指定进度开始运行忽略设置的startDelay动画运行中setCurrentFraction()会使动画从指定进度继续运行setCurrentPlayTime()效果与setCurrentFraction()差不多只不过前者是基于动画总时长计算后修改动画进度源码里setCurrentPlayTime()就是去调用setCurrentFraction()实现的同样动画运行前setCurrentPlayTime()会使动画一start()就马上从指定播放时间开始运行忽略设置的startDelay动画运行中setCurrentPlayTime()会使动画从指定播放时间继续运行setInterpolator()设置动画的插值器默认是AccelerateDecelerateInterpolator开始慢中间快结束慢还有LinearInterpolator匀速、AccelerateInterpolator开始慢逐渐加速、DecelerateInterpolator开始快逐渐减速等等还可通过实现TimeInterpolator接口来自定义插值器setEvaluator()设置动画的Evaluator可译为求值器用于告知属性动画系统如何计算指定属性的值有IntEvaluator、FloatEvaluator、ArgbEvaluator用于计算颜色属性的值或通过实现TypeEvaluator来自定义EvaluatorsetFloatValues()等方法修改动画路径动画运行中setFloatValues()不会打断动画而是保持动画进度不变从新路径中原动画进度的位置继续运行setRepeatCount()指定动画重复次数默认0不重复还可以指定INFINITE无限次重复setRepeatMode()指定动画重复方式默认RESTART从头播放还可以指定REVERSE反向播放addListener()监听onAnimationStart()、onAnimationEnd()、onAnimationCancel()、onAnimationRepeat()回调addUpdateListener()监听onAnimationUpdate()回调这个最常用用来监听ValueAnimator当前计算出的值并应用到要添加动画的对象上示例animator.addUpdateListener(newValueAnimator.AnimatorUpdateListener(){OverridepublicvoidonAnimationUpdate(ValueAnimatoranimation){floatanimatedValue(float)animation.getAnimatedValue();textView.setTranslationX(animatedValue);}});addPauseListener()监听onAnimationPause()、onAnimationResume()回调pause()暂停动画resume()恢复动画cancel()使动画在当前进度结束并会收到onAnimationCancel()回调end()使动画直接跳至动画路径的终点结束能收到终点处的onAnimationUpdate()回调无论用cancel()还是end()结束动画都会收到onAnimationEnd()回调isStarted返回动画是否已经start()startDelay期间为trueisRunning()返回动画是否正在运行startDelay期间为false