2010-08-02 7 views
19

Estoy utilizando el método overridePendingTransition para realizar animaciones de actividad personalizadas.Establecer oyente de animación para animaciones de actividad

Me gustaría saber cuándo finaliza la animación (una devolución de llamada/oyente).

¿Hay alguna manera directa de lograr esto? Si no, sugiérame algo de trabajo.

Respuesta

8

overridePendingTransition no tiene un oyente. Al igual que escribí una publicación anterior, preferiría utilizar una animación normal para el overridePendingTransition (que es solo para Android 2.0 y superior).

Puede obtener un efecto similar y también puede hacer más cosas interesantes con una animación común. Mi publicación anterior aquí: Load XML slowly

13

Utilizo este método para iniciar cualquier animación (resID de la animación XML). Si nextPuzzleOnEnd es verdadero, se llama al método "nextPuzzle" cuando la animación ha finalizado.

El método es parte de mis aplicaciones de rompecabezas y lo uso para mostrar cualquier animación de éxito y luego (después de que anim haya terminado) continúo con el siguiente acertijo.

/* 
* start animation (any view) 
*/ 
private void startAnimation(View v, int resId, Boolean nextPuzzleOnEnd){ 
    Animation anim; 

    if(v!=null){ // can be null, after change of orientation 
      anim = AnimationUtils.loadAnimation(this.getContext(),resId); 
      anim.setFillAfter(false); 
      v.setAnimation(anim); 
      if(nextPuzzleOnEnd){ 
       anim.setAnimationListener(new AnimationListener() { 
        public void onAnimationStart(Animation anim) 
        { 
        }; 
        public void onAnimationRepeat(Animation anim) 
        { 
        }; 
        public void onAnimationEnd(Animation anim) 
        { 
         nextPuzzle(); 
        }; 
       });      
      } 
      v.startAnimation(anim);     
    } 
    } 
3

Después de navegar sin éxito Google para esta pregunta, he de encontrar una solución pasando a través de todos los métodos de anulación específicos.

Entonces lo que hice, fue anulando este mensaje en la actividad, lo que estaba entrando en la pantalla:

@Override 
public void onEnterAnimationComplete() { 
     super.onEnterAnimationComplete(); 
} 
Cuestiones relacionadas