Middle
Jak se v RecyclerView implementují animace?
sobes.tech AI
Odpověď od AI
RecyclerView používá ItemAnimator k animaci změn v datové sadě. Ve výchozím nastavení je použit DefaultItemAnimator.
Když dojde ke změnám (přidání, odstranění, přesunutí prvků), RecyclerView oznámí ItemAnimator. Ten analyzuje tyto změny a spustí odpovídající animace.
Hlavní metody ItemAnimator pro zpracování změn jsou:
animateAdd(): Animace přidání nového prvku.animateRemove(): Animace odstranění prvku.animateMove(): Animace přesunu prvku.animateChange(): Animace změny obsahu prvku (například při aktualizaci dat).
Vlastní animace jsou vytvářeny děděním z ItemAnimator nebo DefaultItemAnimator a přepsáním těchto metod. Uvnitř metod lze použít různé třídy animací, například ValueAnimator nebo ObjectAnimator.
Příklad jednoduché vlastní animace přidání:
class CustomItemAnimator : DefaultItemAnimator() {
override fun animateAdd(holder: RecyclerView.ViewHolder): Boolean {
holder.itemView.alpha = 0f // Počáteční stav: úplně průhledný
holder.itemView.animate()
.alpha(1f) // Konečný stav: úplně viditelný
.setDuration(addDuration) // Délka animace
.setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
dispatchAddFinished(holder) // Oznámení RecyclerView o ukončení
}
override fun onAnimationCancel(animation: Animator?) {
dispatchAddFinished(holder)
}
})
.start()
return true // Vrací true, pokud byla animace spuštěna
}
}
Pro použití vlastního animatoru je třeba jej nastavit v RecyclerView:
recyclerView.itemAnimator = CustomItemAnimator()