2010-11-30 13 views
5

Estoy tratando de hacer algo simple, pero no puedo entender por qué no está funcionando.
Lo que estoy tratando de hacer es: cuando toco un ImageView, se mostrará una animación en él. Y luego, solo cuando termine esa animación, comenzará la nueva actividad.
En cambio, lo que sucede es que la nueva actividad comienza de inmediato y la animación no se muestra.Animación ANTES del cambio de actividad

Aquí es el xml de animación:

<rotate android:interpolator="@android:anim/decelerate_interpolator" 
    android:fromDegrees="-45" 
    android:toDegrees="-10" 
    android:pivotX="90%" 
    android:pivotY="10%" 
    android:repeatCount="3" 
    android:fillAfter="false" 
    android:duration="10000" /> 

Y este es el código que utilizo para llamarlo:

public void onCreate(Bundle savedInstanceState) 
{ 
    final ImageView ib = (ImageView)this.findViewById(R.id.photo); 
    ib.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      Animation hang_fall = AnimationUtils.loadAnimation(Curriculum.this, R.anim.hang_fall); 
      v.startAnimation(hang_fall); 
      Intent i = new Intent(ThisActivity.this, NextActivity.class); 
      ThisActivity.this.startActivity(i); 
     }// end onClick 
    }); 
}// end onCreate 

Como se ve He intentado poner un muuuucho tiempo para la animación, pero no funciona NextActivity comienza de inmediato, no espera a que termine la animación en ThisActivity.
¿Alguna idea sobre por qué sucede esto?

Respuesta

4

Esto se debe a que está empezando la intención y la animación al mismo tiempo. Que necesita para empezar la intención después de la animación ha terminado, así:

@Override 
public void onClick(View v) 
{ 
    Animation hang_fall = AnimationUtils.loadAnimation(Curriculum.this, R.anim.hang_fall); 
    hang_fall.setAnimationListener(new Animation.AnimationListener() 
     { 
      public void onAnimationEnd(Animation animation) 
      { 
       Intent i = new Intent(ThisActivity.this, NextActivity.class); 
       ThisActivity.this.startActivity(i); 
      } 

      public void onAnimationRepeat(Animation animation) 
      { 
       // Do nothing! 
      } 

      public void onAnimationStart(Animation animation) 
      { 
       // Do nothing! 
      } 
     }); 
    v.startAnimation(hang_fall); 
}// end onClick 
+0

trabajado como un regalo, gracias! Desearía que hubiera un poco más de documentación sobre algunos de estos asuntos. :) – Stephan

+0

http://developer.android.com/reference/packages.html es la mejor referencia que hay. Solo busca las clases que quieras saber cómo usar. – CaseyB

Cuestiones relacionadas