Android: как использовать 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.

Может ли кто-нибудь помочь?

Ответ 1

Если вы действительно, действительно, действительно хотите использовать ValueAnimator для анимации перевода View вы можете сделать это следующим образом (чистовая ваш пример, предполагая, что вы имели в виду translationX, голые в виду, что вы оживляющий перевод от 0px до 3px, так что вы, вероятно, не увидит большой разницы):

public static void move(final 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) {
            view.setTranslationX((float)animation.getAnimatedValue());
        }
    });
    va.setRepeatCount(5);
    va.start();
}

Ответ 2

ValueAnimator - отличный инструмент для создания анимации. Обычно у нас есть два шага:

Шаг 1- Создайте свой класс ValueAnimator с помощью

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. 
        }
    });