Hacer que aparezca una nueva actividad detrás de la anterior durante la transición
Lo que estoy tratando de lograr es anular la animación de la actividad de inicio.
La animación debe dar la impresión de que la actividad anterior está en la parte superior de la nueva actividad, y luego se desliza hacia abajo y fuera de la pantalla para revelar la nueva actividad. He intentado varias maneras, como el uso de overridePendingTransition(startAnim, exitAnim)
Pero el problema es que ambos se animan en la misma línea de tiempo. Así que overridePendingTransition(R.anim.hold, R.anim.exit_slide_down);
Nunca se ve la animación de salida porque la nueva actividad está en la parte superior. ¿Se puede lograr esto utilizando el marco?
- ¿Cómo puedo añadir una animación a la actividad finish ()
- Android - Actividad de espera durante la animación
- Ventajas de utilizar Bundle en lugar de Direct Intent putExtra () en Android
- Las animaciones de salida de la actividad no funcionan como se esperaba en Android 4.0
- Cómo evitar que el servicio se reinicie después de que la actividad se haya barrido desde el conmutador de tareas?
- Cambiar de actividad: No ocultar la actividad anterior
- GetExtras () devuelve null en el nivel de aplicación (-class)
- ¿Por qué mi animación de rotación todo wonky cuando se aplica a una transición de la actividad?
- Android: ¿Cómo restablecer / eliminar las preferencias de la aplicación durante las pruebas de unidad?
- Cómo crear un detector de animación para las transiciones de actividad
- Activación inteligente "androide" desde una notificación push
- ¿Cómo proporcionar animación al llamar a otra actividad en Android?
- Establece el oyente de animación en Animaciones de actividad
He estado tratando de resolver su solución en un proyecto de ejemplo y lo tengo trabajando con este código:
Llame a la animación con:
startActivity(new Intent(this, Activity2.class)); overridePendingTransition(R.anim.push_down_in,R.anim.push_down_out);
R.anim.push_down_in:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="300"/> </set>
R.anim.push_down_out:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="300"/> </set>
En realidad, he encontrado una propiedad llamada android:zAdjustment
en los archivos de animación.
Si pongo android:zAdjustment="bottom"
en hold.xml
(pantalla 2) y android:zAdjustment="top"
en push_down_out.xml
(pantalla 1) entonces puedo obtener el efecto deseado.
Esto obtiene alrededor de la cuestión de orden z (asumí que era un problema con los tiempos de animación así que estaba ladrando hasta el árbol equivocado).
John
La solución que funciona para mí:
R.anim.exit_slide_down
<set xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="top"> <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="600" /> </set>
…y entonces
Intent intent = new Intent(activity, SecondActivity.class); startActivity(intent); activity.overridePendingTransition(0, R.anim.exit_slide_down);