Sobes.tech
Middle

Ako sa implementujú animácie v RecyclerView?

sobes.tech AI

Odpoveď od AI

RecyclerView používa ItemAnimator na animáciu zmien v dátovej sade. Predvolene sa používa DefaultItemAnimator.

Keď dôjde ku zmenám (pridanie, odstránenie, presun prvkov), RecyclerView oznámi ItemAnimator. Ten analyzuje tieto zmeny a spustí príslušné animácie.

Hlavné metódy ItemAnimator na spracovanie zmien sú:

  • animateAdd(): Animácia na pridanie nového prvku.
  • animateRemove(): Animácia na odstránenie prvku.
  • animateMove(): Animácia na presun prvku.
  • animateChange(): Animácia na zmenu obsahu prvku (napríklad pri aktualizácii dát).

Vlastné animácie sa vytvárajú dedičstvom od ItemAnimator alebo DefaultItemAnimator a prepísaním týchto metód. Vo vnútri metód je možné použiť rôzne triedy animácií, ako napríklad ValueAnimator alebo ObjectAnimator.

Príklad jednoduchej vlastnej animácie pridania:

class CustomItemAnimator : DefaultItemAnimator() {

    override fun animateAdd(holder: RecyclerView.ViewHolder): Boolean {
        holder.itemView.alpha = 0f // Počiatočný stav: úplne priehľadný
        holder.itemView.animate()
            .alpha(1f) // Konečný stav: úplne viditeľný
            .setDuration(addDuration) // Dĺžka animácie
            .setListener(object : AnimatorListenerAdapter() {
                override fun onAnimationEnd(animation: Animator?) {
                    dispatchAddFinished(holder) // Oznámenie RecyclerView o ukončení
                }
                override fun onAnimationCancel(animation: Animator?) {
                    dispatchAddFinished(holder)
                }
            })
            .start()
        return true // Vracia true, aby signalizoval, že animácia bola spustená
    }
}

Na použitie vlastného animátora je potrebné ho nastaviť v RecyclerView:

recyclerView.itemAnimator = CustomItemAnimator()