首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用九雄激素结束AnimatorSet?

如何使用九雄激素结束AnimatorSet?
EN

Stack Overflow用户
提问于 2014-07-04 11:47:39
回答 1查看 311关注 0票数 0

我用的是九雄雄激素来做动画。

我的代码如下:

代码语言:javascript
复制
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);
    }
}

在第二个动画师(MTargetScaleAnimSet)开始之前,我调用end()方法来结束整个AnimatorSet。但是,我发现end()方法不能结束AnimatorSet中的所有子动画器。

问:如何让所有的儿童动画师按顺序播放?

EN

回答 1

Stack Overflow用户

发布于 2014-07-06 05:49:42

经过一番集思广益,我找到了如下解决办法:

第一:

代码语言:javascript
复制
mScaleAnimSet.setStartDelay(3500);

代码语言:javascript
复制
mTargetAnimSet.playSequentially(mTransAnimSet, mScaleAnimSet);

改为:

代码语言:javascript
复制
mTargetAnimSet.playTogether(mTransAnimSet, mScaleAnimSet );

我认为关键是如果动画不启动,你就不能结束它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24573575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档