Android动画一个接一个

时间:2011-04-20 13:22:45

标签: android animation

这是我的情景。

首先,我将动画设置为我的视图(View.startAnimation(animationSet)),其中animationSet同时包含Translate + Rotate + Scale all。它工作正常。 在那个animationSet上我有fillAfter(true)。 一段时间后,用户单击一个按钮并onClick我必须在同一个View上启动新的ScaleAnimation。所以,如果我做了类似的事情:

@Override
public void onClick(View v) {
    ScaleAnimation scaleAnimation = new ScaleAnimation(mOldScaleFactor, mScaleFactor, mOldScaleFactor, mScaleFactor, mPivotX, mPivotY);
    scaleAnimation.setDuration(ANIMATION_DURATION_MILIS);
    scaleAnimation.setStartOffset(ANIMATION_OFFSET_MILIS);
    scaleAnimation.setFillAfter(true);
    v.startAnimation(scaleAnimation);
}

所有上一个动画(翻译+ Rotete +比例)都被遗忘了。

如何从旧动画结束处开始新动画?

1 个答案:

答案 0 :(得分:2)

您可以尝试实现一个侦听器,并可能捕获上一个动画停止时的信息,但是我不确定您是否能够查询动画的状态。另一种选择是确保动画停止在已知状态。这样你就可以知道如何开始下一个动画了。

public float param1;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    //load text view to add animation
    ImageView image1 = (ImageView) findViewById(R.id.splash_imageView1);
    Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_anim);
    image1.startAnimation(fade1);
    fade1.setAnimationListener(new AnimationListener() {
        public void onAnimationEnd(Animation animation) {
            //interrogate animation here
        }