androidanimationresetobjectanimator

Stop AnimatorSet of ObjectAnimators in Android


Im trying to stop the animation of an ImageView when a button is clicked. The animation I am using is an AnimatorSet consisting of 5 ObjectAnimators... The problem is that I can't figure how to stop and clear this animation from the ImageView when the button is clicked as btn.clearAnimation() obviously doesn't work.

Thank you for your help.


Solution

  • You should be able to call animatorSet.cancel() to cancel the animation. Here's an example that cancels the animation 5 seconds after it starts:

    package com.example.myapp2;
    
    import android.animation.Animator;
    import android.animation.AnimatorSet;
    import android.animation.ObjectAnimator;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MyActivity extends Activity {
        /**
         * Called when the activity is first created.
         */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            TextView tv = (TextView) findViewById(R.id.hello_world);
    
            List<Animator> animations = new ArrayList<Animator>();
    
            animations.add(ObjectAnimator.ofInt(tv, "left", 100, 1000).setDuration(10000));
            animations.add(ObjectAnimator.ofFloat(tv, "textSize", 10, 50).setDuration(10000));
    
            final AnimatorSet animatorSet = new AnimatorSet();
            animatorSet.playTogether(animations);
            animatorSet.start();
    
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    animatorSet.cancel();
                }
            }, 5000);
        }
    }