studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-intent navigation back-stack

para - manual de programacion android pdf



Cambia el orden z de animaciones de actividad en Android (1)

Una vieja pregunta, pero he tenido el mismo problema. La solución es agregar el atributo android:zAdjustment="top" o android:zAdjustment="bottom" en nuestras definiciones de animación. Ejemplo:

nothing_background.xml

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="bottom" android:duration="400" android:fromXDelta="0%p" android:toXDelta="0%p" > </translate>

fade_in_foreground.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="top"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:interpolator="@android:anim/accelerate_interpolator" android:duration="400" /> </set>

En tu código que desencadena la transición:

Intent intent = new Intent(FromActivity.this, ToActivity.class); Bundle animate = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.nothing_background, R.anim.fade_in_foreground).toBundle(); startActivity(intent, animate);

¿Hay alguna manera de invertir el orden z de las animaciones de actividad? Básicamente, cuando comienzas una nueva actividad, se agrega a la backstack y su ventana se agrega sobre la ventana de la actividad anterior. Al regresar, a veces más tarde, la actividad que se toma de la columna trasera muestra su ventana debajo de la actividad superior. La mayoría del tiempo tiene mucho sentido, pero tengo un siguiente problema con ese comportamiento.

Tengo un widget que apunta a algún lugar profundo de la estructura de la aplicación. Así que tengo que crear manualmente la pila de respaldo cuando el usuario hace clic en el botón de arriba en la barra de acciones. Pero en realidad llamo a startActivity con un nuevo intento de apuntar a una nueva actividad con back stack adjunto ... y aquí vamos al problema ... La actvidad realmente se anima desde la parte superior, en lugar de estar animada como de costumbre cuando aparece desde atrás la forma estándar.

puedes ver el flujo en la siguiente imagen

Aquí hay un fragmento de código de cómo estoy recreando la pila de la tarea posterior y navegando al usuario hacia la actividad principal. también debajo se puede ver una captura de pantalla de la animación ... Básicamente, la ventana que está en la parte superior debe estar en la parte inferior (es más alta en la jerárquica de la aplicación). FYI todas esas animaciones se realizan a través de animaciones estándar de ventanas XML y se disparan con anulación de las llamadas de Transición. Traté de modificar el ajuste Z dentro de esas animaciones, pero parece que solo afecta varias capas en una animación particular.

if (NavUtils.shouldUpRecreateTask(this, upIntent)) { NavUtils.navigateUpTo(this, upIntent); } else { TaskStackBuilder.create(this) .addNextIntentWithParentStack(upIntent) .startActivities();

}