package Ġcom . work fort . pst ui an . util . view . animated text view . ty per Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Typed Array Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . util . Attribute Set Ċ import Ġcom . work fort . pst ui an . R Ċ import Ġcom . work fort . pst ui an . util . view . animated text view . base . Animation Listener Ċ import Ġcom . work fort . pst ui an . util . view . animated text view . base . Animated TextView Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ Ġ************************************************************************* *** Ċ Ġ* Ġ Ġ* ĠCreated Ġby Ġ: Ġar han Ġon Ġ 2 7 ĠNov , Ġ 2 0 2 1 Ġat Ġ 1 : 1 8 . Ċ Ġ* Ġ Ġ* Ġ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 ĠT yper TextView Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠAnimated TextView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrandom : ĠRandom ĊĠĠĠ Ġprivate Ġvar Ġm Text : ĠCharSequence ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Handler : ĠHandler ĊĠĠĠ Ġprivate Ġvar Ġchar Increase : ĠInt ĊĠĠĠ Ġprivate Ġvar Ġty per Speed : ĠInt ĊĠĠĠ Ġprivate Ġvar Ġanimation Listener : ĠAnimation Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠINVALID ATE Ġ= Ġ 0 x 7 6 7 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array : ĠTyped Array Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). obtain Styled Attributes ( attrs , ĠR . style able . T yper TextView ) ĊĠĠĠĠĠĠĠ Ġty per Speed Ġ= Ġtyped Array . getInt ( R . style able . T yper TextView _ ty per Speed , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġchar Increase Ġ= Ġtyped Array . getInt ( R . style able . T yper TextView _ char Increase , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġrandom Ġ= ĠRandom () ĊĠĠĠĠĠĠĠ Ġm Text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġm Handler Ġ= ĠHandler ( Handler . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Length : ĠInt Ġ= Ġtext . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Length Ġ< Ġm Text . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Length Ġ+ Ġchar Increase Ġ> Ġm Text . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchar Increase Ġ= Ġm Text . length Ġ- Ġcurrent Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( m Text . sub Sequence ( current Length , Ġcurrent Length Ġ+ Ġchar Increase )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Time Ġ= Ġ( ty per Speed Ġ+ Ġrandom . nextInt ( ty per Speed )). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage . obtain () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . what Ġ= ĠINVALID ATE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . sendMessage Delayed ( message , Ġrandom Time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Callback Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Listener ?. on Animation End ( this @ T yper TextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Animation Listener ( listener : ĠAnimation Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanimation Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget T yper Speed (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġty per Speed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset T yper Speed ( ty per Speed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . ty per Speed Ġ= Ġty per Speed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Char Increase (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchar Increase ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Char Increase ( char Increase : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . char Increase Ġ= Ġchar Increase ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Progress ( progress : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġm Text . sub Sequence ( 0 , Ġ( m Text . length Ġ* Ġprogress ). toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġanimate Text ( text : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġset Text ("") ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage . obtain () ĊĠĠĠĠĠĠĠ Ġmessage . what Ġ= ĠINVALID ATE ĊĠĠĠĠĠĠĠ Ġm Handler . sendMessage ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġm Handler . remove Messages ( INVALID ATE ) ĊĠĠĠ Ġ} Ċ }