Jika Anda tidak harus menggunakan perpustakaan dukungan, lihat jawaban Roman .
Tetapi jika Anda ingin menggunakan pustaka dukungan Anda harus menggunakan kerangka animasi lama seperti yang dijelaskan di bawah ini.
Setelah berkonsultasi dengan jawaban Reto dan blindstuff, saya membuat kode berikut berfungsi.
Fragmen tampak meluncur masuk dari kanan dan meluncur keluar ke kiri saat kembali ditekan.
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();
Urutan itu penting. Ini berarti Anda harus menelepon setCustomAnimations()
sebelum replace()
atau animasi tidak akan berpengaruh!
Selanjutnya file-file ini harus ditempatkan di dalam folder 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>
Durasi animasi dapat diubah ke nilai default @android:integer/config_shortAnimTime
apa saja seperti atau nomor lainnya.
Perhatikan bahwa jika di antara penggantian fragmen terjadi perubahan konfigurasi (misalnya rotasi) aksi kembali tidak dianimasikan. Ini adalah bug yang didokumentasikan yang masih ada di rev 20 pustaka dukungan.