2016-01-21 3 views
1

Мне нужно отменить анимацию вращения, получить градусы, которые были отменены, и установить новую анимацию с использованием значения градусов как fromValue.Получение анимации вращения на Android

Я попытался следующие, чтобы получить ход анимации, когда отмените называется:

@Override 
    public void onAnimationEnd(Animation animation) { 
     mAnimatingRotation = false; 
     Transformation transformation = new Transformation(); 
     animation.getTransformation(AnimationUtils.currentAnimationTimeMillis(),transformation); 
     Matrix matrix = transformation.getMatrix(); 
    } 

Однако я не получаю один и тот же объект преобразования, как один внутри объекта анимации. Что я получаю выглядит следующим образом:

Transformation{alpha=1.0 matrix=[1.0, -0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}

Я думаю, что проблема в в AnimationUtils.currectAnimationTimeMillis() и что это не время, что я должен перейти к методу. Я также пробовал прохождение в System.currentTimeMillis() с таким же результатом

ответ

2

Вы можете использовать ViewPropertyAnimator, который сохраняет его значение над представлением. Вот простой пример:

myView.animate().rotation(90).setDuration(5000); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      myView.animate().cancel(); 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        myView.animate().rotation(90).setDuration(3000); 
       } 
      }, 2000); 
     } 
    }, 2000); 

Это повернет вид на 90 градусов. Начальная продолжительность составляет 5 секунд. Это остановит анимацию через 2 секунды, и через 2 секунды она снова продолжит анимацию.

p.s для обработчиков только для того, чтобы показать вам эффект :)

+0

Отличное решение, спасибо! Удалено много ненужного кода из моего метода – vkislicins

Смежные вопросы