Sobes.tech
Middle

Kaip įgyvendinti animacijas RecyclerView?

sobes.tech AI

Atsakymas iš AI

RecyclerView naudoja ItemAnimator pakeisti duomenų rinkinį su animacijomis. Numatytoji yra DefaultItemAnimator.

Kai įvyksta pakeitimai (pridedami, ištrinami, perkelti elementai), RecyclerView praneša ItemAnimator. Animatorius analizuoja šiuos pakeitimus ir paleidžia atitinkamas animacijas.

Pagrindiniai ItemAnimator metodai pakeitimams apdoroti:

  • animateAdd(): naujo elemento pridėjimo animacija.
  • animateRemove(): elemento ištrynimo animacija.
  • animateMove(): elemento perkėlimo animacija.
  • animateChange(): elemento turinio pakeitimo animacija (pavyzdžiui, duomenų atnaujinimas).

Pasirinktinės animacijos kuriamos paveldint iš ItemAnimator arba DefaultItemAnimator ir perrašant šiuos metodus. Metodų viduje galima naudoti įvairius animacijos klases, tokias kaip ValueAnimator ar ObjectAnimator.

Pavyzdys paprastos pasirinktinės pridėjimo animacijos:

class CustomItemAnimator : DefaultItemAnimator() {

    override fun animateAdd(holder: RecyclerView.ViewHolder): Boolean {
        holder.itemView.alpha = 0f // Pradinis būvis: visiškai permatomas
        holder.itemView.animate()
            .alpha(1f) // Galutinis būvis: visiškai matomas
            .setDuration(addDuration) // Animacijos trukmė
            .setListener(object : AnimatorListenerAdapter() {
                override fun onAnimationEnd(animation: Animator?) {
                    dispatchAddFinished(holder) // Pranešimas RecyclerView apie pabaigą
                }
                override fun onAnimationCancel(animation: Animator?) {
                    dispatchAddFinished(holder)
                }
            })
            .start()
        return true // Grąžiname true, jei animacija pradėta
    }
}

Norint naudoti pasirinktinį animatorių, jį reikia nustatyti RecyclerView:

recyclerView.itemAnimator = CustomItemAnimator()