/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 Ġbattle ent Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . battle ent . clip an iv iew Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . Relative Layout Ċ import Ġcom . battle ent . clip an iv iew . component . Clip TextView Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util .* ĊĊ Ċ class ĠClip An i Layout Ġ: ĠFrame Layout , ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMSG _ PROGRESS Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMSG _ CLICK _ DISABLE Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠClip Stat ue Ġ{ ĊĠĠĠĠĠĠĠ ĠSTATE _ CLIP , ĊĠĠĠĠĠĠĠ ĠSTATE _ FILL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġdelegate : ĠDelegate ? Ġ= Ġnull ĊĊĠĠĠ Ġinterface ĠDelegate Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonClick Fill Stat ues () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclip TextView : ĠClip TextView ĊĠĠĠ Ġvar Ġprogress Number Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġclip Status Ġ= ĠClip Stat ue . STATE _ CLIP ĊĊĠĠĠ Ġprivate Ġvar Ġhandler : ĠClip An i Layout Handler ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġan i Thread : ĠThread ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtimer : ĠTimer ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġback Ground Color : ĠInt Ġ= ĠContext Compat . getColor ( context , Ġandroid . R . color . black ) ĊĠĠĠ Ġprivate Ġvar Ġtext : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar ĠtextColor : ĠInt Ġ= ĠContext Compat . getColor ( context , Ġandroid . R . color . white ) ĊĠĠĠ Ġprivate Ġvar Ġtext Size : ĠInt Ġ= Ġ 1 3 ĊĠĠĠ Ġprivate Ġvar Ġan i Duration : ĠLong Ġ= Ġ 3 ĊĠĠĠ Ġprivate Ġvar Ġan i St ay Duration : ĠLong Ġ= Ġ 3 0 0 0 ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ Ġset Attrs ( attrs ) Ġ} ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Attrs ( attrs , Ġdef Style Attr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish Inf late () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Finish Inf late () ĊĠĠĠĠĠĠĠ Ġclip View Create ( context ) ĊĠĠĠĠĠĠĠ Ġupdate Attr () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġan i Thread ?. interrupt () ĊĠĠĠĠĠĠĠ Ġtimer ?. cancel () ĊĠĠĠĠĠĠĠ Ġtimer ?. purge () ĊĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠMessage . obtain () ĊĠĠĠĠĠĠĠ Ġmsg . what Ġ= ĠMSG _ PROGRESS ĊĠĠĠĠĠĠĠ Ġmsg . arg 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġhandler ?. sendMessage ( msg ) ĊĊĠĠĠĠĠĠĠ Ġclip Status Ġ= ĠClip Stat ue . STATE _ CLIP ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclip View Create ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset OnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġclip TextView Ġ= ĠClip TextView ( context ) ĊĠĠĠĠĠĠĠ Ġclip TextView . layout Params Ġ= ĠRelative Layout . LayoutParams ( LayoutParams . MATCH _ PARENT , ĠLayout Params . MATCH _ PARENT ) ĊĠĠĠĠĠĠĠ Ġclip TextView . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġclip TextView . setType face ( clip TextView . type face , ĠType face . NORMAL ) ĊĠĠĠĠĠĠĠ Ġadd View ( clip TextView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Attrs ( attrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġdef Style Attr ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Clip View , Ġdef Style Attr , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġlet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Clip View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback Ground Color Ġ= Ġget Color ( R . style able . Clip View _ clip _ backgroundColor , Ġback Ground Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . style able . Clip View _ clip _ text )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġlet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġget Color ( R . style able . Clip View _ clip _ textColor , ĠtextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġget Int ( R . style able . Clip View _ clip _ text Size , Ġtext Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan i Duration Ġ= Ġget Int ( R . style able . Clip View _ clip _ ani Duration , Ġan i Duration . toInt ()). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan i St ay Duration Ġ= Ġget Int ( R . style able . Clip View _ clip _ ani St ay Duration , Ġan i St ay Duration . toInt ()). to Long () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Attr () Ġ{ ĊĠĠĠĠĠĠĠ Ġclip TextView . set BackgroundColor ( back Ground Color ) ĊĠĠĠĠĠĠĠ Ġclip TextView . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġclip TextView . setText Size ( Typed Value . COMPLEX _ UNIT _ SP , Ġtext Size . toFloat ()) ĊĠĠĠĠĠĠĠ Ġclip TextView . setTextColor ( textColor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clip Text ( text : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . text Ġ= Ġtext . toString () ĊĠĠĠĠĠĠĠ Ġclip TextView . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clip TextStyle ( type face : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclip TextView . setType face ( clip TextView . type face , Ġtype face ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clip Text Size ( sp : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . text Size Ġ= Ġsp . toInt () ĊĠĠĠĠĠĠĠ Ġclip TextView . setText Size ( Typed Value . COMPLEX _ UNIT _ SP , Ġsp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clip TextColor ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġclip TextView . setTextColor ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clip BackgroundColor ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġback Ground Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġclip TextView . set BackgroundColor ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clip An i Duration ( milli Sec : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġan i Duration Ġ= Ġmilli Sec Ġ/ Ġ 1 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clip St ay Duration ( milli Sec : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġan i St ay Duration Ġ= Ġmilli Sec ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Animation Enable ( animation Enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( animation Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġthis . clip Status Ġ= ĠClip Stat ue . STATE _ CLIP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġthis . clip Status Ġ= ĠClip Stat ue . STATE _ FILL ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Delegate ( delegate : ĠDelegate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . delegate Ġ= Ġdelegate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler Ġ= ĠClip An i Layout Handler ( Weak Reference ( this )) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( clip Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClip Stat ue . STATE _ CLIP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. send Empty Message ( MSG _ CLICK _ DISABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclip Status Ġ= ĠClip Stat ue . STATE _ FILL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Number Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan i Thread ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( progress Number Ġ< Ġclip TextView . getMax Progress () Ġ&& Ġ! it . is Inter rupted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( ani Duration ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ progress Number ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠMessage . obtain () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . what Ġ= ĠMSG _ PROGRESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . arg 1 Ġ= Ġprogress Number ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. sendMessage ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Runnable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer ?. schedule ( object Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. send Empty Message ( MSG _ CLICK _ DISABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Number Ġ= Ġclip TextView . getMax Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan i Thread ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( progress Number Ġ> Ġ 0 Ġ&& Ġ! it . is Inter rupted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( ani Duration ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-- progress Number ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠMessage . obtain () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . what Ġ= ĠMSG _ PROGRESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . arg 1 Ġ= Ġprogress Number ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. sendMessage ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclip Status Ġ= ĠClip Stat ue . STATE _ CLIP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġan i St ay Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan i Thread Ġ= ĠThread ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan i Thread ?. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClip Stat ue . STATE _ FILL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate ?. onClick Fill Stat ues () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠClip An i Layout Handler ( var Ġclip An i Layout : ĠWeak Reference < Clip An i Layout >) Ġ: ĠHandler () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( msg . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMSG _ PROGRESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclip An i Layout . get ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . clip TextView . set Progress ( msg . arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isEnabled Ġ= Ġmsg . arg 1 Ġ>= Ġit . clip TextView . getMax Progress () Ġ|| Ġmsg . arg 1 Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMSG _ CLICK _ DISABLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclip An i Layout . get ()?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }