package Ġcom . hu anch eng fly . ti eba . post . utils . anim Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Value Animator Ċ Ċ /** Ċ Ġ* ĠAn ĠAn imator Ġjust Ġlike Ġ[ Value Animator ], Ġbut Ġit Ġcould Ġreverse Ġitself Ġwithout Ġthe Ġlimitation Ġof ĠAPI Ġlevel . Ċ Ġ* ĠIn Ġaddition , Ġcom bing Ġwith Ġ[ Anim Set ], Ġit Ġis Ġeasy Ġto Ġbuild Ġmuch Ġmore Ġreadable Ġanimation Ġcode . ĠSee Ġat Ġ[ Anim Set ] Ċ Ġ*/ Ċ class ĠValue Anim Ġ: ĠAnim () Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġ[ Value Animator ] Ġis Ġabout Ġto Ġrun ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġanim ator : ĠAn imator Ġ= ĠValue Animator () ĊĠĠĠ Ġprivate Ġval Ġvalue Animator ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġanim ator Ġas ĠValue Animator ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġanimation Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġvalues : ĠAny ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Array Ġ-> Ġvalue Animator . set Float Values (* it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Array Ġ-> Ġvalue Animator . setInt Values (* it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" unsupported Ġvalue Ġtype ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ action ] Ġdescribe Ġwhat Ġto Ġanimate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġaction : Ġ(( Any ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . add Update Listener Ġ{ Ġvalue Animator Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . animated Value . let Ġ{ Ġvalue ?. invoke ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġrepeat Ġtimes Ġof Ġ[ Value Anim ] ĊĠĠĠĠ Ġ* Ġ[ Value Animator . INF IN ITE ] Ġmeans Ġrepeat Ġforever ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġrepeat Count ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . repeat Count Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġrepeat Ġmode Ġof Ġ[ Value Anim ] ĊĠĠĠĠ Ġ* Ġthe Ġavailable Ġvalue Ġis Ġ[ Value Animator . RE START ] Ġor Ġ[ Value Animator . RE VERSE ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġrepeat Mode ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠValue Animator . RE START ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . repeat Mode Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreverse Ġthe Ġvalue Ġof Ġ[ Value Animator ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġreverse () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalues ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Array Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . reverse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . set Float Values (* it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Array Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . reverse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . setInt Values (* it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" unsupported Ġtype Ġof Ġvalue ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Beginning () Ġ{ ĊĠĠĠ Ġ} Ċ }