package Ġpl . m are k lang iew ic z . my intent Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroid . widget . ProgressBar Ċ import Ġpl . m are k lang iew ic z . my utils . scale 0 d Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠM are k ĠLang iew ic z Ġon Ġ 1 6 . 1 2 . 1 5 . Ċ Ġ*/ Ċ @ Suppress Lint (" Click ableView Accessibility ") Ċ class ĠCount down Ġinternal Ġconstructor ( private Ġval Ġbar : ĠProgress Bar ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġboost Ġ= Ġ 0 L ĊĊĠĠĠ Ġprivate Ġvar Ġcommand : ĠString ? Ġ= Ġnull Ġ// Ġwe Ġuse Ġthis Ġalso Ġto Ġtrack Ġif Ġcount down Ġis Ġrunning Ġat Ġthe Ġmoment Ġ( null Ġ= Ġit Ġdoesn 't ) ĊĊĠĠĠ Ġvar Ġlistener : ĠListener ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġanim ator : ĠObject Animator Ġ= ĠObject Animator . of Int ( bar , Ġ" progress ", Ġ 0 , Ġ 1 0 0 0 0 ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 3 0 0 0 ĊĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġbar . setOn Touch Listener Ġ{ Ġ_, Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboost Ġ= Ġevent . x . scale 0 d ( bar . width . toFloat (), Ġanim ator . duration . toFloat ()). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . current Play Time Ġ= Ġboost ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġfeature Ġabove Ġ( with ĠOn Touch Listener ) Ġis Ġcorrect Ġand Ġcool Ġ- Ġuser Ġcan Ġtouch Ġhow Ġmuch Ġboost Ġhe Ġwants ; ĊĠĠĠĠĠĠĠ Ġ// Ġbut Ġbelow Ġwe Ġsave Ġsimpler Ġand Ġmore Ġpractical Ġfeature Ġ- Ġuser Ġcan Ġclick Ġto Ġswitch Ġboost Ġbetween Ġ 0 Ġand Ġmax . ĊĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġbar . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġboost Ġ= Ġif Ġ( boost Ġ== Ġ 0 L ) Ġanim ator . duration Ġelse Ġ 0 L ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . current Play Time Ġ= Ġboost ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġanim ator . addListener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold cmd Ġ= Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. apply Ġ{ Ġon Count down Cancelled ( old cmd ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold cmd Ġ= Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. apply Ġ{ Ġold cmd ?. let Ġ{ Ġon Count down Finished ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . current Play Time Ġ= Ġboost ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. apply Ġ{ Ġon Count down Started ( command ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcancel () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġstart ( cmd : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcancel () ĊĠĠĠĠĠĠĠ Ġcommand Ġ= Ġcmd ĊĠĠĠĠĠĠĠ Ġanim ator . current Play Time Ġ= Ġboost ĊĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( command Ġ!== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . cancel () Ġ// IMPORTANT : Ġit Ġcalls Ġon Animation Cancelled Ġfollowed Ġby Ġon Animation End ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Running : ĠBoolean Ġget () Ġ= Ġcommand Ġ!= Ġnull ĊĊĠĠĠ Ġinterface ĠListener Ġ{ Ġ// ĠTODO ĠSO MED AY : Ġuse ĠP ue . Relay Ġto Ġobjects Ġpublish Ġthese Ġevents ĊĠĠĠĠĠĠĠ Ġfun Ġon Count down Started ( cmd : ĠString ?) ĊĠĠĠĠĠĠĠ Ġfun Ġon Count down Finished ( cmd : ĠString ?) ĊĠĠĠĠĠĠĠ Ġfun Ġon Count down Cancelled ( cmd : ĠString ?) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ