2013-05-01 4 views
0

Я пытаюсь воспроизвести анимацию один за другим на устройствах с предварительной сотой.Как начать анимацию один за другим для просмотра?

Я попытался воспроизвести анимацию один за другим, используя AnimationSet и значение startOffset каждой анимации без везения.

Я также попытался создать новый класс, который управляет анимацией, чтобы начать один за другим, но он также не работает.

Вот код:

public class AnimationChain { 

    private final List<Animation> mAnimations = new ArrayList<Animation>(); 
    private AnimationListener mAnimationListener; 
    private final View mViewToAnimate; 

    public AnimationChain(final View viewToAnimate) { 
     this.mViewToAnimate = viewToAnimate; 
    } 

    public void addAnimation(final Animation animation) { 
     mAnimations.add(animation); 
    } 

    public void setAnimationListener(final AnimationListener animationListener) { 
     this.mAnimationListener = animationListener; 
    } 

    public List<Animation> getAnimations() { 
     return this.mAnimations; 
    } 

    public Animation getLastAnimation() { 
     final int size = mAnimations.size(); 
     if (size == 0) 
      return null; 
     return mAnimations.get(size - 1); 
    } 

    public void startAnimations() { 
     if (mAnimations.size() == 0) 
      return; 
     for (int i = 0; i < mAnimations.size(); ++i) { 
      final Animation currentAnimation = mAnimations.get(i); 
      final Animation nextAnimation; 
      if (i != mAnimations.size() - 1) 
       nextAnimation = mAnimations.get(i + 1); 
      else 
       nextAnimation = null; 
      currentAnimation.setAnimationListener(new AnimationListener() { 

       @Override 
       public void onAnimationStart(final Animation animation) { 
        if (mAnimationListener != null) 
         mAnimationListener.onAnimationStart(animation); 
       } 

       @Override 
       public void onAnimationRepeat(final Animation animation) { 
        if (mAnimationListener != null) 
         mAnimationListener.onAnimationRepeat(animation); 
       } 

       @Override 
       public void onAnimationEnd(final Animation animation) { 
        if (mAnimationListener != null) 
         mAnimationListener.onAnimationEnd(animation); 
        if (nextAnimation != null) 
         mViewToAnimate.startAnimation(nextAnimation); 
       } 
      }); 
     } 
     final Animation firstAnimation = mAnimations.get(0); 
     mViewToAnimate.startAnimation(firstAnimation); 
    } 
} 

кажется, что он делает вызвать следующую анимацию, чтобы начать, но это ничего, что я могу видеть не делать. Однако использование одной анимации отлично подходит для любой анимации.

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

Кроме того, если я попытаюсь работать над сотовой версией и выше, будет ли эта проблема еще существовать? Как я могу с ним справиться? Может быть, использование 9-old-android library может помочь?

+0

Да. используйте https://github.com/JakeWharton/NineOldAndroids – petey

+0

как? Мне также нужно использовать анимацию кривой (например, эта: http://stackoverflow.com/a/11076492/878126) –

+0

Сначала я хочу знать, что было не так с моим кодом и как я должен был делать это без библиотек. –

ответ

0

Какие анимации вы используете? Я попробовал это с помощью TranslateAnimation и RotateAnimation, он работает. И где вы вызываете startAnimations?

+0

Я пробовал трансляционную анимацию, которая «перемещает» вид в сторону, а затем масштабирует анимацию, чтобы показать, что она сжимается и возвращается назад. может быть, я не очень хорошо справился с этим? –

+0

напишите код, который вызывает AnimationChain. –

+0

К сожалению, потому что это не сработало, я удалил все это. Надеюсь, у меня будет шанс попробовать его снова. –

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

  • Нет связанных вопросов^_^