Si vous n'êtes pas obligé d'utiliser la bibliothèque de support, jetez un œil à la réponse de Roman .
Mais si vous souhaitez utiliser la bibliothèque de support, vous devez utiliser l'ancien framework d'animation comme décrit ci-dessous.
Après avoir consulté les réponses de Reto et de Blindstuff, j'ai fait fonctionner le code suivant.
Les fragments semblent glisser de la droite et glisser vers la gauche lorsque vous appuyez sur le dos.
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();
L'ordre est important. Cela signifie que vous devez appeler setCustomAnimations()
avant replace()
ou l'animation ne prendra pas effet!
Ensuite, ces fichiers doivent être placés dans le dossier res / 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 durée des animations peut être modifiée à n'importe quelle valeur par défaut comme @android:integer/config_shortAnimTime
ou tout autre nombre.
Notez que si entre les remplacements de fragments un changement de configuration se produit (par exemple une rotation), l'action de retour n'est pas animée. Il s'agit d'un bogue documenté qui existe toujours dans la version 20 de la bibliothèque de support.