Im tratando de detener la animación de un ImageView cuando hace clic en un botón. La animación que estoy usando es un AnimatorSet que consta de 5 ObjectAnimators… El problema es que no puedo entender cómo parar y claro esta animación de la ImageView cuando se pulsa el botón, como btn.clearAnimation() obviamente no funciona.

Gracias por su ayuda.

OriginalEl autor MajorDanger | 2014-08-25

2 Comentarios

  1. 13

    Usted debería ser capaz de llamar animatorSet.cancel() para cancelar la animación. Aquí un ejemplo en el que se cancela la animación de 5 segundos después de que se inicia:

    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);
        }
    }

    OriginalEl autor Jessie A. Morris

  2. 28

    Si había AnimatorSet oyentes añadido, asegúrese de eliminar a los oyentes antes de cancelar.

    animatorSet.removeAllListeners();
    animatorSet.end();
    animatorSet.cancel();
    Eso, en realidad es un hecho muy importante.
    esto realmente ayudó un montón!!! Pero, ¿por qué end() primero y luego cancel().
    No hay necesidad de end() como cancel llamará automáticamente. Habría una diferencia si se quitan los oyentes después de la cancel como usted recibirá onAnimationCancel primero y después onAnimationEnd

    OriginalEl autor Libin

Dejar respuesta

Please enter your comment!
Please enter your name here