Bagaimana saya bisa menghidupkan Item RecyclerView ketika ada muncul?
Animator item default hanya akan hidup ketika data ditambahkan atau dihapus setelah data pendaur ulang telah ditetapkan. Saya baru mengembangkan aplikasi dan tidak tahu harus mulai dari mana.
Adakah ide bagaimana mencapai ini?
android
android-layout
android-recyclerview
PaulNunezM
sumber
sumber
recyclerView.scheduleLayoutAnimation()
setelah kumpulan data berubah, jika tidak, animasi tidak akan berfungsi.EDIT:
Menurut dokumentasi ItemAnimator :
Jadi, kecuali Anda menambahkan item Anda satu per satu ke Anda
RecyclerView
dan menyegarkan tampilan di setiap iterasi, saya tidak berpikirItemAnimator
adalah solusi untuk kebutuhan Anda.Inilah cara Anda dapat menganimasikan
RecyclerView
item ketika item tersebut muncul menggunakan CustomAdapter:Dan custom_item_layout Anda akan terlihat seperti ini:
Untuk informasi lebih lanjut tentang CustomAdapters dan
RecyclerView
, lihat pelatihan ini di dokumentasi resmi .Masalah pada scroll cepat
Menggunakan metode ini dapat menyebabkan masalah dengan pengguliran cepat. Tampilan dapat digunakan kembali saat animasi sedang terjadi. Untuk menghindari itu, disarankan untuk menghapus animasi ketika dilepaskan.
Di CustomViewHolder:
Jawaban lama:
Lihatlah repo Gabriele Mariotti , saya cukup yakin Anda akan menemukan yang Anda butuhkan. Dia menyediakan ItemAnimators sederhana untuk RecyclerView, seperti SlideInItemAnimator atau SlideScaleItemAnimator.
sumber
onViewDetachedFromWindow
dan memanggilclearAnimation
tampilan. Masalahnya adalah bahwa ada animasi yang berjalan ketika RecyclerView mencoba menggunakan kembali tampilan.Saya animasi memudar
Recyclerview
item ketika pertama kali muncul seperti yang ditunjukkan pada kode di bawah ini. Mungkin ini akan berguna bagi seseorang.Anda juga dapat mengganti
setFadeAnimation()
dengan yang berikut inisetScaleAnimation()
untuk menghidupkan tampilan item dengan menskalakannya dari suatu titik:Kode di atas memiliki beberapa kutil sejauh ketika Anda menggulir
RecyclerView
item selalu pudar atau bersisik. Jika mau, Anda dapat menambahkan kode untuk memungkinkan animasi terjadi ketika fragmen atau aktivitas yang berisiRecyclerView
pertama kali dibuat (mis., Dapatkan waktu sistem saat pembuatan dan hanya izinkan animasi untuk milidetik FADE_DURATION pertama).sumber
Saya membuat animasi dari jawaban pbm dengan sedikit
modification
untuk membuat informasi hanya berjalan satu kalidengan kata lain
Animation appear with you scroll down only
dan
onBindViewHolder
fungsi panggilansumber
lastPosition
mewakili jumlah tampilan yang diberikan, jadi ini adalah awal nilainya-1
, setiap kali tampilan baru ditampilkan, kami memulai animasi dan meningkatkan posisiAnda dapat menambahkan
android:layoutAnimation="@anim/rv_item_animation"
atributRecyclerView
seperti ini:terima kasih untuk artikel yang sangat bagus di sini: https://proandroiddev.com/enter-animation-using-recyclerview-and-layoutanimation-part-1-list-75a874a5d213
sumber
Tempat yang baik untuk memulai adalah ini: https://github.com/wasabeef/recyclerview-animators/blob/master/animators/src/main/java/jp/wasabeef/recyclerview/adapters/AnimationAdapter.java
Anda bahkan tidak perlu perpustakaan lengkap, kelas itu sudah cukup. Kemudian jika Anda hanya mengimplementasikan kelas Adaptor Anda memberikan animator seperti ini:
Anda akan melihat item muncul dari bawah saat mereka menggulir, juga menghindari masalah dengan gulungan cepat.
sumber
Animasi item di recyclerview ketika mereka diikat di adaptor mungkin bukan ide terbaik karena hal itu dapat menyebabkan item dalam recyclerview hidup dengan kecepatan yang berbeda. Dalam kasus saya, item pada akhir recyclerview menghidupkan posisi mereka lebih cepat daripada yang di atas sebagai yang di atas harus lebih jauh untuk bepergian sehingga membuatnya tampak berantakan.
Kode asli yang saya gunakan untuk menganimasikan setiap item ke dalam recyclerview dapat ditemukan di sini:
http://frogermcs.github.io/Instagram-with-Material-Design-concept-is-getting-real/
Tapi saya akan menyalin dan menempelkan kode jika tautan rusak.
LANGKAH 1: Setel ini di dalam metode onCreate Anda sehingga Anda memastikan animasi hanya berjalan sekali:
LANGKAH 2: Anda harus memasukkan kode ini ke metode di mana Anda ingin memulai animasi:
Di tautan, penulis menghidupkan ikon ikon bilah alat, jadi ia memasukkannya ke dalam metode ini:
LANGKAH 3: Sekarang tulis logika untuk startIntroAnimation ():
Alternatif pilihan saya:
Saya lebih suka menghidupkan seluruh recyclerview daripada barang-barang di dalam recyclerview.
LANGKAH 1 dan 2 tetap sama.
Di LANGKAH 3, segera setelah panggilan API Anda kembali dengan data Anda, saya akan memulai animasi.
Ini akan menghidupkan seluruh tinjauan ulang Anda sehingga dapat terbang dari bagian bawah layar.
sumber
latestPostRecyclerview
?Buat metode ini ke dalam Adaptor daur ulang Anda
Dan akhirnya tambahkan baris kode ini di onBindViewHolder
setZoomInAnimation(holder.itemView);
sumber
Pada tahun 2019, saya akan menyarankan untuk memasukkan semua animasi item ke dalam ItemAnimator.
Mari kita mulai dengan mendeklarasikan animator dalam tampilan pendaur ulang:
Deklarasikan animator khusus itu,
Mirip dengan yang di atas ada satu untuk menghilang
animateDisappearance
, untuk menambahanimateAdd
, untuk mengubahanimateChange
dan memindahkananimateMove
.Satu poin penting adalah memanggil animasi-dispatcher yang benar di dalamnya.
sumber
Perluas adaptor Anda seperti di bawah ini
Dan tambahkan metode super ke onBindViewHolder
Ini adalah cara otomatis untuk membuat adaptor animasi seperti "Basheer AL-MOMANI"
sumber
Saya pikir, lebih baik menggunakannya seperti ini: (dalam adaptor RecyclerView timpa hanya satu metode)
Jika Anda ingin setiap lampiran animasi ada di RV.
sumber