Untuk menghidupkan transisi antara fragmen, atau untuk menghidupkan proses memperlihatkan atau menyembunyikan fragmen yang Anda gunakan Fragment Manager
untuk membuat a Fragment Transaction
.
Dalam setiap Transaksi Fragmen, Anda dapat menentukan animasi masuk dan keluar yang akan digunakan untuk acara dan sembunyikan masing-masing (atau keduanya ketika penggantian digunakan).
Kode berikut menunjukkan bagaimana Anda akan mengganti sebuah fragmen dengan menggeser satu fragmen dan menggeser yang lainnya di tempatnya.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
DetailsFragment newFragment = DetailsFragment.newInstance();
ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");
// Start the animated transition.
ft.commit();
Untuk mencapai hal yang sama dengan menyembunyikan atau menampilkan sebuah fragmen, Anda cukup memanggil ft.show
atau ft.hide
, mengirimkan fragmen yang ingin Anda perlihatkan atau sembunyikan masing-masing.
Untuk referensi, definisi animasi XML akan menggunakan objectAnimator
tag. Contoh slide_in_left mungkin terlihat seperti ini:
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="x"
android:valueType="floatType"
android:valueFrom="-1280"
android:valueTo="0"
android:duration="500"/>
</set>
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.
Urutan itu penting. Ini berarti Anda harus menelepon
setCustomAnimations()
sebelumreplace()
atau animasi tidak akan berpengaruh!Selanjutnya file-file ini harus ditempatkan di dalam folder res / anim .
enter.xml :
exit.xml :
pop_enter.xml :
pop_exit.xml :
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.
sumber
Saya sangat menyarankan Anda menggunakan ini daripada membuat file animasi karena ini adalah solusi yang jauh lebih baik. Android Studio sudah menyediakan standar
animation
yang dapat Anda gunakan tanpa membuat file XML baru. Nama animasinya adalah android.R.anim.slide_in_left dan android.R.anim.slide_out_right dan Anda dapat menggunakannya sebagai berikut:Keluaran:
sumber
Pustaka dukungan yang dimodifikasi saya mendukung penggunaan animasi Tampilan (mis.
<translate>, <rotate>
) Dan Animator Obyek (mis.<objectAnimator>
) Untuk Transisi Fragmen. Ini diimplementasikan dengan NineOldAndroids . Lihat dokumentasi saya di github untuk detailnya.sumber
Sedangkan untuk saya, saya perlu diraction view:
Di sini berfungsi untuk saya:
slide_in_right.xml
slide_out_left.xml
Kode transaksi:
sumber
Saya menyelesaikan ini dengan cara di bawah ini
sumber