package Ġcom . code quest . animated recyclerview Ċ Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . view . View Ċ import Ġandroidx . swiper ef resh layout . widget . Circular Progress Drawable Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . resource . drawable . Drawable Transition Options Ċ import Ġkotlinx . android . synt hetic . main . view _ post . view .* Ċ Ċ class ĠPost ViewHolder ( view : ĠView ) Ġ: ĠAnimated Item Holder ( view ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġanim ator : ĠAn imator Set ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġbind ( post : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ ĠitemView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Title . text Ġ= Ġpost . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Body . text Ġ= Ġpost . body ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost User Email . text Ġ= Ġpost . user Email ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcircular Progress Drawable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Drawable ( item View . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Radius Ġ= Ġ 3 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( get Avatar Url ( post )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transition ( Drawable Transition Options . with Cross Fade ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( circular Progress Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. timeout ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( post User Avatar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Avatar Url ( post : ĠPost ) Ġ= ĊĠĠĠĠĠĠĠ Ġ" https :// api . ador able . io / avatars / 2 0 0 /${ post . user Email }. png " ĊĊĠĠĠ Ġoverride Ġfun Ġon Enter From Top () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator ?. cancel () ĊĠĠĠĠĠĠĠ Ġanimate Translation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Translation Value Ġ= Ġ- ANIM ATED _ TRANSL ATION _ AMOUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Translation Value Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alpha Value Ġ= ĠitemView . alpha , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Alpha Value Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Exit To Top () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator ?. cancel () ĊĠĠĠĠĠĠĠ Ġanimate Translation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Translation Value Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Translation Value Ġ= Ġ- ANIM ATED _ TRANSL ATION _ AMOUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alpha Value Ġ= ĠitemView . alpha , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Alpha Value Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Enter From Bottom () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator ?. cancel () ĊĠĠĠĠĠĠĠ Ġanimate Translation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Translation Value Ġ= ĠAN IM ATED _ TRANSL ATION _ AMOUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Translation Value Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alpha Value Ġ= ĠitemView . alpha , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Alpha Value Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Exit To Bottom () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator ?. cancel () ĊĠĠĠĠĠĠĠ Ġanimate Translation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Translation Value Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Translation Value Ġ= ĠAN IM ATED _ TRANSL ATION _ AMOUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alpha Value Ġ= ĠitemView . alpha , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Alpha Value Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate Translation ( ĊĠĠĠĠĠĠĠ Ġstart Translation Value : ĠFloat , ĊĠĠĠĠĠĠĠ Ġfinal Translation Value : ĠFloat , ĊĠĠĠĠĠĠĠ Ġstart Alpha Value : ĠFloat , ĊĠĠĠĠĠĠĠ Ġfinal Alpha Value : ĠFloat ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtranslation Animator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Animator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. of Float ( item View , Ġ" translation Y ", Ġstart Translation Value , Ġfinal Translation Value ) ĊĊĠĠĠĠĠĠĠ Ġval Ġalpha Animator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Animator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. of Float ( item View , Ġ" alpha ", Ġstart Alpha Value , Ġfinal Alpha Value ) ĊĊĠĠĠĠĠĠĠ Ġanim ator Ġ= ĠAn imator Set (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay To gether ( translation Animator , Ġalpha Animator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= ĠAN IM ATION _ DURATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAN IM ATION _ DURATION Ġ= Ġ 1 5 0 L ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAN IM ATED _ TRANSL ATION _ AMOUNT Ġ= Ġ 2 0 0 f ĊĠĠĠ Ġ} Ċ } Ċ