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 ライブラリを使用すると役立つでしょうか?

4

1 に答える 1

0

どのアニメーションを使用していますか? TranslateAnimation と RotateAnimation で試してみましたが、動作しています。また、どこから startAnimations を呼び出していますか?

于 2013-05-01T19:33:09.790 に答える