Sobes.tech
Middle

Kā realizēt animācijas RecyclerView?

sobes.tech AI

Atbilde no AI

RecyclerView izmanto ItemAnimator, lai animētu izmaiņas datu kopā. Noklusējuma ir DefaultItemAnimator.

Kad notiek izmaiņas (elementu pievienošana, dzēšana, pārvietošana), RecyclerView paziņo ItemAnimator. Animators analizē šīs izmaiņas un sāk atbilstošās animācijas.

Galvenās ItemAnimator metodes izmaiņu apstrādei:

  • animateAdd(): jauna elementa pievienošanas animācija.
  • animateRemove(): elementa dzēšanas animācija.
  • animateMove(): elementa pārvietošanas animācija.
  • animateChange(): elementa satura izmaiņu animācija (piemēram, datu atjaunināšana).

Pielāgotas animācijas tiek veidotas, mantojot no ItemAnimator vai DefaultItemAnimator un pārrakstot šīs metodes. Metodes iekšpusē var izmantot dažādus animācijas klases, piemēram, ValueAnimator vai ObjectAnimator.

Vienkāršs piemērs pielāgotai pievienošanas animācijai:

class CustomItemAnimator : DefaultItemAnimator() {

    override fun animateAdd(holder: RecyclerView.ViewHolder): Boolean {
        holder.itemView.alpha = 0f // Sākuma stāvoklis: pilnīgi caurspīdīgs
        holder.itemView.animate()
            .alpha(1f) // Beigu stāvoklis: pilnīgi redzams
            .setDuration(addDuration) // Animācijas ilgums
            .setListener(object : AnimatorListenerAdapter() {
                override fun onAnimationEnd(animation: Animator?) {
                    dispatchAddFinished(holder) // Paziņojums RecyclerView par pabeigšanu
                }
                override fun onAnimationCancel(animation: Animator?) {
                    dispatchAddFinished(holder)
                }
            })
            .start()
        return true // Atgriežam true, ja animācija uzsākta
    }
}

Lai izmantotu pielāgotu animatoru, to nepieciešams iestatīt RecyclerView:

recyclerView.itemAnimator = CustomItemAnimator()