package Ġces ar fer re ira . inst ast ory Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġces ar fer re ira . inst ast ory . callbacks . Progress Time Watcher Ċ import Ġces ar fer re ira . inst ast ory . utils . to Pixel Ċ Ċ @ Suppress Lint (" View Constructor ") Ċ class ĠMy ProgressBar ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġvar Ġindex : ĠInt , ĊĠĠĠ Ġvar Ġduration InSeconds : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġtime Watcher : ĠProgress Time Watcher , ĊĠĠĠ Ġ@ Drawable Res Ġprivate Ġvar Ġm Progress Drawable : ĠInt Ġ= ĠR . drawable . white _ light grey _ drawable Ċ ) Ġ: ĠProgress Bar ( ĊĠĠĠ Ġcontext , ĊĠĠĠ Ġnull , ĊĠĠĠĠ 0 , ĊĠĠĠ Ġandroid . R . style . Widget _ ProgressBar _ Horizontal Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġobject Animator Ġ= ĠObject Animator . of Int ( this , Ġ" progress ", Ġthis . progress , Ġ 1 0 0 ) ĊĠĠĠ Ġprivate Ġvar Ġhas Started : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT , Ġ 1 f ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġparams . margin End Ġ= Ġ 5 f . to Pixel ( context ) ĊĊĠĠĠĠĠĠĠ Ġthis . max Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġthis . progress Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġthis . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġthis . progress Drawable Ġ= ĠContext Compat . get Drawable ( context , Ġm Progress Drawable ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Animator . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Watcher . on End ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation ?. apply Ġ{ Ġremove All Listeners () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġobject Animator . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ( duration InSeconds Ġ* Ġ 1 0 0 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhas Started Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Animator . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpause Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Animator . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpause () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresume Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( has Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Animator . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresume () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġedit Duration And Resume ( new Duration InSeconds : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . duration InSeconds Ġ= Ġnew Duration InSeconds ĊĠĠĠĠĠĠĠ Ġcancel Progress () ĊĠĠĠĠĠĠĠ Ġstart Progress () ĊĠĠĠ Ġ} Ċ }