Ինչպես իրականացնել անիմացիաները RecyclerView-ում?
sobes.tech AI
Պատասխան AI-ից
RecyclerView-ը օգտագործում է ItemAnimator՝ տվյալների հավաքածուում փոփոխությունները անիմացիայով ցույց տալու համար: Դեպքում, ըստ նախնական կարգավորումների, օգտագործվում է DefaultItemAnimator:
Երբ տեղի են ունենում փոփոխություններ (հավելում, հեռացում, տեղափոխում), RecyclerView-ը տեղեկացնում է ItemAnimator-ին: Այս վերջինը վերլուծում է փոփոխությունները և սկսում համապատասխան անիմացիաները:
ItemAnimator-ի հիմնական մեթոդները փոփոխությունները մշակելու համար են՝
animateAdd(): Նոր տարր ավելացնելու անիմացիա:animateRemove(): Տարր հեռացնելու անիմացիա:animateMove(): Տարր տեղափոխելու անիմացիա:animateChange(): Տարրի բովանդակության փոփոխության անիմացիա:
Անհատականացված անիմացիաները ստեղծվում են ժառանգելով ItemAnimator կամ DefaultItemAnimator-ից և վերագրելով այդ մեթոդները: Մեթոդների ներսում կարելի է օգտագործել տարբեր անիմացիոն դասեր՝ օրինակ, ValueAnimator կամ ObjectAnimator:
Օրինակ՝ պարզ անհատականացված ավելացման անիմացիա:
class CustomItemAnimator : DefaultItemAnimator() {
override fun animateAdd(holder: RecyclerView.ViewHolder): Boolean {
holder.itemView.alpha = 0f // սկզբնական վիճակ՝ ամբողջությամբ թափանցիկ
holder.itemView.animate()
.alpha(1f) // վերջնական վիճակ՝ ամբողջությամբ տեսանելի
.setDuration(addDuration) // անիմացիայի տևողությունը
.setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
dispatchAddFinished(holder) // տեղեկացնել RecyclerView-ին՝ ավարտի մասին
}
override fun onAnimationCancel(animation: Animator?) {
dispatchAddFinished(holder)
}
})
.start()
return true // ցույց է տալիս, որ անիմացիան սկսվել է
}
}
Որպեսզի կիրառեք անհատականացված անիմատոր, այն պետք է սահմանեք RecyclerView-ում՝
recyclerView.itemAnimator = CustomItemAnimator()