para - transicion de actividades android studio
Establecer animador de animación en animaciones de actividad (4)
Estoy usando el método overridePendingTransition
para realizar animaciones de actividad personalizadas.
Me gustaría saber cuándo finaliza la animación (un callback / listener).
¿Hay alguna forma directa de lograr esto? Si no, sugiérame un poco de trabajo.
Después de explorar sin éxito Google para esta pregunta, he encontrado una solución al pasar por todos los métodos de anulación.
Entonces, lo que hice fue anular este método en la actividad que está ingresando a la pantalla:
@Override
public void onEnterAnimationComplete() {
super.onEnterAnimationComplete();
}
La solución de @Hambug es agradable. Pero hay problema. onEnterAnimationComplete funcionará en Lollipop y en la API superior (21).
@Override
public void onEnterAnimationComplete() {
super.onEnterAnimationComplete();
//write code here.
}
cualquiera que sea el código que escriba en el método anterior, no se ejecutará en dispositivos prelolipop. Por lo tanto, debe poner una verificación de versión y escribirla de acuerdo a sus necesidades, por ejemplo, en onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP){
//write code here.
}
Utilizo este método para iniciar cualquier animación (resID del XML de animación). 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 la animación haya terminado) continuar con el siguiente rompecabezas.
/*
* 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);
}
}
overridePendingTransition
no tiene un escucha. Al igual que escribí una publicación anterior, prefieres usar una animación normal en lugar de overridePendingTransition
(que es solo para Android 2.0 y superior).
Puedes obtener un efecto similar y también puedes hacer más cosas geniales con una animación normal. Mi publicación anterior aquí: Cargar XML lentamente