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