0

私はアニメーションにnineoldandroidを使用しています。

私のコードは次のとおりです。

Button mTarget;
Animator mTargetAnim;
AnimatorSet mTargetScaleAnimSet;

private void createAnimation() {
    if (mTargetAnim == null) {
        ObjectAnimator yAnim = ObjectAnimator.ofFloat(mTarget, "y",
                mTarget.getY(), mTarget.getY() + 500).setDuration(3500);
        yAnim.setRepeatCount(0);
        yAnim.setRepeatMode(ValueAnimator.REVERSE);
        yAnim.setInterpolator(new AccelerateInterpolator(2f));
        yAnim.addListener(this);

        ObjectAnimator xAnim = ObjectAnimator.ofFloat(mTarget, "x",
                mTarget.getX(), mTarget.getX() + 500).setDuration(3500);
        xAnim.setStartDelay(0);
        xAnim.setRepeatCount(0);
        xAnim.setRepeatMode(ValueAnimator.REVERSE);
        xAnim.setInterpolator(new AccelerateInterpolator(2f));
        // the first AnimatorSet
        AnimatorSet xyAnimSet = new AnimatorSet();
        xyAnimSet.playTogether(yAnim, xAnim);

        mTargetScaleAnimSet = new AnimatorSet();
        ObjectAnimator scaleXAnim = ObjectAnimator.ofFloat(mTarget,
                "scaleX", 1f, 0f, 0.2f, 0f);
        ObjectAnimator scaleYAnim = ObjectAnimator.ofFloat(mTarget,
                "scaleY", 1f, 0f, 0.2f, 0f);
        mTargetScaleAnimSet.playTogether(scaleXAnim,
                scaleYAnim);
        mTargetScaleAnimSet.setDuration(3000);
        mTargetScaleAnimSet.addListener(this);


        mTargetAnim = new AnimatorSet();
        ((AnimatorSet) mTargetAnim).playSequentially(xyAnimSet, mTargetScaleAnimSet);

        mTargetAnim.addListener(this);
    }
}

2 番目の Animator(mTargetScaleAnimSet) の開始前に、end() メソッドを呼び出して AnimatorSet 全体を終了します。しかし、end() メソッドでは AnimatorSet 内のすべての子アニメーターを終了できないことがわかりました。

Q: シーケンシャルでプレイしているすべての子アニメーターはどうすればよいですか?

4

1 に答える 1