Entonces, si usted no tiene que utilizar la biblioteca de soporte echar un vistazo a Roman's respuesta.
Pero si desea utilizar la biblioteca de soporte , tiene que utilizar el antiguo marco de animación como se describe a continuación.
Después de consultar Reto's y blindstuff's respuestas He obtenido el siguiente código en funcionamiento.
Los fragmentos aparecen deslizamiento desde la derecha y deslizante hacia la izquierda cuando se presiona hacia atrás.
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit);
CustomFragment newCustomFragment = CustomFragment.newInstance();
transaction.replace(R.id.fragment_container, newCustomFragment);
transaction.addToBackStack(null);
transaction.commit();
el orden es importante. Esto significa que debe llamar al setCustomAnimations()
antes de replace()
o ¡la animación no tendrá efecto!
Siguientes estos archivos tienen que ser colocados en el interior del res/carpeta anim.
enter.xml:
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%"
android:toXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
exit.xml:
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
pop_enter.xml:
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%"
android:toXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
pop_exit.xml:
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
La duración de las animaciones se puede cambiar a cualquiera de los valores por defecto, como @android:integer/config_shortAnimTime
o cualquier otro número.
Tenga en cuenta que si entre los reemplazos de fragmentos ocurre un cambio de configuración (por ejemplo, rotación), la acción de retroceso no se anima. Este es un documented bug que todavía existe en el rev 20 de la biblioteca de soporte.
impresionante, gracias. – alexanderblom
Cuando probé esto, muestra * RuntimeException: Nombre del animador desconocido: translate *. –
Asegúrese de que las animaciones definidas en slide_in_left y right estén construidas usando un conjunto de definiciones de objectAnimator en lugar de la definición de animación anterior. –