package Ġcom . work fort . pst ui an . util . view . image slider . indicator view . animation . type Ċ Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . animation . controller . Value Controller . Update Listener Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . animation . data . type . Drop Animation Value Ċ Ċ /** Ċ Ġ* Ġ Ġ************************************************************************* *** Ċ Ġ* Ġ Ġ* ĠCreated Ġby Ġ: Ġar han Ġon Ġ 2 7 ĠNov , Ġ 2 0 2 1 Ġat Ġ 8 : 4 6 . Ċ Ġ* Ġ Ġ* ĠEmail Ġ: Ġas h ik . p stu . c se @ gmail . com Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠThis Ġclass Ġis Ġfor : Ċ Ġ* Ġ Ġ* Ġ 1 . Ċ Ġ* Ġ Ġ* Ġ 2 . Ċ Ġ* Ġ Ġ* Ġ 3 . Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠLast Ġedited Ġby Ġ: Ġar han Ġon Ġ 2 0 2 1 / 1 1 / 2 7 . Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠLast ĠReview ed Ġby Ġ: Ġ< Reviewer ĠName > Ġon Ġ< mm / dd / yy > Ċ Ġ* Ġ Ġ************************************************************************* *** Ċ Ġ*/ Ċ Ċ class ĠDrop Animation ( listener : ĠUpdate Listener ) Ġ: ĠBase Animation < Animator Set ? >( listener ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġwidth Start Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġwidth End Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġheight Start Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġheight End Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġradius Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠAnimation Type Ġ{ ĊĠĠĠĠĠĠĠ ĠWidth , ĠHeight , ĠRadius ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġvalue Ġ= ĠDrop Animation Value () ĊĠĠĠ Ġoverride Ġfun Ġcreate Animator (): ĠAn imator Set Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠAn imator Set () ĊĠĠĠĠĠĠĠ Ġanim ator . interpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠ Ġreturn Ġanim ator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprogress ( progress : ĠFloat ): ĠDrop Animation Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( anim ator Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplay Time Left Ġ= Ġ( progress Ġ* Ġanimation Duration ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Reverse Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( anim Ġin Ġanim ator !!. child Animations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= Ġanim Ġas ĠValue Animator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim Duration Ġ= Ġanim ator . duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurr Play Time Ġ= Ġplay Time Left ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Reverse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Play Time Ġ-= Ġanim Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( curr Play Time Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( curr Play Time Ġ>= Ġanim Duration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Play Time Ġ= Ġanim Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anim ator . values Ġ!= Ġnull Ġ&& Ġanim ator . values . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . current Play Time Ġ= Ġcurr Play Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Reverse Ġ&& Ġanim Duration Ġ>= Ġanimation Duration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Reverse Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġduration ( duration : ĠLong ): ĠDrop Animation Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . duration ( duration ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith ( ĊĠĠĠĠĠĠĠ Ġwidth Start : ĠInt , ĊĠĠĠĠĠĠĠ Ġwidth End : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight Start : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight End : ĠInt , ĊĠĠĠĠĠĠĠ Ġradius : ĠInt ĊĠĠĠ Ġ): ĠDrop Animation Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( has Changes ( width Start , Ġwidth End , Ġheight Start , Ġheight End , Ġradius )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator Ġ= Ġcreate Animator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . width Start Ġ= Ġwidth Start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . width End Ġ= Ġwidth End ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . height Start Ġ= Ġheight Start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . height End Ġ= Ġheight End ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . radius Ġ= Ġradius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfrom Radius Ġ= Ġradius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Radius Ġ= Ġ( radius Ġ/ Ġ 1 . 5 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Duration Ġ= Ġanimation Duration Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Animator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Value Animation ( width Start , Ġwidth End , Ġanimation Duration , ĠAnimation Type . Width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Forward Animator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Value Animation ( height Start , Ġheight End , Ġhalf Duration , ĠAnimation Type . Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradius Forward Animator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Value Animation ( from Radius , Ġto Radius , Ġhalf Duration , ĠAnimation Type . Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Backward Animator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Value Animation ( height End , Ġheight Start , Ġhalf Duration , ĠAnimation Type . Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradius Backward Animator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Value Animation ( to Radius , Ġfrom Radius , Ġhalf Duration , ĠAnimation Type . Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator ?. play ( height Forward Animator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . with ( radius Forward Animator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . with ( width Animator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . before ( height Backward Animator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . before ( radius Backward Animator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Value Animation ( ĊĠĠĠĠĠĠĠ Ġfrom Value : ĠInt , ĊĠĠĠĠĠĠĠ Ġto Value : ĠInt , ĊĠĠĠĠĠĠĠ Ġduration : ĠLong , ĊĠĠĠĠĠĠĠ Ġtype : ĠAnimation Type ĊĠĠĠ Ġ): ĠValue Animator Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanim Ġ= ĠValue Animator . of Int ( from Value , Ġto Value ) ĊĠĠĠĠĠĠĠ Ġanim . interpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠ Ġanim . duration Ġ= Ġduration ĊĠĠĠĠĠĠĠ Ġanim . add Update Listener Ġ{ Ġanimation Ġ-> Ġon Animator Update ( animation , Ġtype ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġanim ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Animator Update ( animation : ĠValue Animator , Ġtype : ĠAnimation Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġframe Value Ġ= Ġanimation . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Type . Width Ġ-> Ġvalue . width Ġ= Ġframe Value ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Type . Height Ġ-> Ġvalue . height Ġ= Ġframe Value ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Type . Radius Ġ-> Ġvalue . radius Ġ= Ġframe Value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlistener . on Value Updated ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Changes ( ĊĠĠĠĠĠĠĠ Ġwidth Start : ĠInt , ĊĠĠĠĠĠĠĠ Ġwidth End : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight Start : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight End : ĠInt , ĊĠĠĠĠĠĠĠ Ġradius : ĠInt ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . width Start Ġ!= Ġwidth Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( this . width End Ġ!= Ġwidth End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( this . height Start Ġ!= Ġheight Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( this . height End Ġ!= Ġheight End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . radius Ġ!= Ġradius ĊĠĠĠ Ġ} Ċ }