Android: 如何使用ValueAnimator

Android: how to use ValueAnimator

我想用下面这个做翻译动画

public static void move(TextView view){

    ValueAnimator va = ValueAnimator.ofFloat(0f, 3f);
    int mDuration = 3000; //in millis
    va.setDuration(mDuration);
    va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        public void onAnimationUpdate(ValueAnimator animation) {

        }
    });
    va.setRepeatCount(5);
    va.start();
}

但是我不知道如何使用onAnimationUpdate方法

有人可以帮忙吗?

如果你真的,真的真的想用ValueAnimator对于 View 的动画翻译,你可以这样做(完成你的例子,假设你的意思是 translationX.

请记住,您正在对从 0px 到 3px 的转换进行动画处理,因此您可能看不到太大差异。

fun move(view: TextView) {
  val va = ValueAnimator.ofFloat(0f, 3f)
  va.duration = 3000 //in millis
  va.addUpdateListener { animation -> view.translationX = animation.animatedValue as Float }
  va.repeatCount = 5
  va.start()
}

ValueAnimator 是制作动画的好工具。通常我们有两个步骤:

第 1 步 - 通过

创建您的 ValueAnimator class
ValueAnimator animator = ValueAnimator.ofFloat(start value, end value);

第 2 步 - 添加一个更新侦听器并至少覆盖 onAnimationUpdate() 函数

animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float value = (float) animator.getAnimatedValue();

            //this value should be used to update properties of views.
            //just don't forget to run invalidate function of your views 
              // to redraw them. 
        }
    });