Я пытаюсь воспроизвести анимацию один за другим на устройствах с предварительной сотой.Как начать анимацию один за другим для просмотра?
Я попытался воспроизвести анимацию один за другим, используя 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 может помочь?
Да. используйте https://github.com/JakeWharton/NineOldAndroids – petey
как? Мне также нужно использовать анимацию кривой (например, эта: http://stackoverflow.com/a/11076492/878126) –
Сначала я хочу знать, что было не так с моим кодом и как я должен был делать это без библиотек. –