Se non devi usare la libreria di supporto, dai un'occhiata alla risposta di Roman .
Ma se si desidera utilizzare la libreria di supporto, è necessario utilizzare il vecchio framework di animazione come descritto di seguito.
Dopo aver consultato le risposte di Reto e blindstuff, ho ottenuto il seguente codice funzionante.
I frammenti appaiono scivolando da destra e scivolando verso sinistra quando si preme indietro.
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'ordine è importante Questo significa che devi chiamare setCustomAnimations()
prima replace()
o l'animazione non avrà effetto!
Successivamente questi file devono essere inseriti nella cartella 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 durata delle animazioni può essere modificata in uno dei valori predefiniti come @android:integer/config_shortAnimTime
o in qualsiasi altro numero.
Si noti che se tra le sostituzioni di frammenti si verifica una modifica della configurazione (ad esempio rotazione) l'azione posteriore non viene animata. Questo è un bug documentato che esiste ancora nel rev 20 della libreria di supporto.