package Ġgo . de yu . mar que et ext Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroid . widget . Horizontal ScrollView Ċ import Ġandroid . widget . TextView ĊĊ Ċ class ĠMar quee TextView Ġ: ĠHorizontal ScrollView Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ text Size : ĠFloat Ġ= Ġ 1 4 F ĊĠĠĠ Ġprivate Ġvar Ġ_ text String : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġ_ textColor : ĠInt Ġ= ĠColor . RED ĊĠĠĠ Ġprivate Ġvar Ġ_ speed : ĠInt Ġ= Ġ 1 0 ĊĠĠĠ Ġprivate Ġvar Ġanim ator : ĠObject Animator ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm TextView : ĠTextView ĊĠĠĠ Ġvar Ġm Text : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ text String ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ text String Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġm TextColor : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ textColor ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ textColor Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġm Speed : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ speed ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ speed Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġm Text Size : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ text Size ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ text Size Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( null , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġdef Style ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( attrs : ĠAttributeSet ?, Ġdef Style : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġattributes ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĠR . style able . Mar quee TextView , Ġdef Style , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ_ text String Ġ= Ġa . getString ( R . style able . Mar quee TextView _ Text ) ĊĠĠĠĠĠĠĠ Ġ_ textColor Ġ= Ġa . getColor ( R . style able . Mar quee TextView _ TextColor , ĠColor . RED ) ĊĠĠĠĠĠĠĠ Ġ_ text Size Ġ= Ġa . get Dimension ( R . style able . Mar quee TextView _ Text Size , Ġ 1 4 F ) ĊĠĠĠĠĠĠĠ Ġ_ speed Ġ= Ġa . getInt ( R . style able . Mar quee TextView _ Speed , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĊĠĠĠĠĠĠĠ Ġm TextView Ġ= ĠTextView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params = LayoutParams ( LayoutParams . WRAP _ CONTENT , ĠLayout Params . WRAP _ CONTENT Ġ). apply Ġ{ Ġgravity = Ġ ĠGr avity . CENTER _ VERTICAL Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm TextView . setMax Lines ( 1 ) ĊĠĠĠĠĠĠĠ Ġadd View ( m TextView ) ĊĠĠĠĠĠĠĠ Ġis Horizontal ScrollBar Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset On Touch Listener Ġ{ Ġview , Ġmotion Event Ġ-> Ġtrue } ĊĠĠĠĠĠĠĠ Ġstart () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġm TextView . setText Size ( Typed Value . COMPLEX _ UNIT _ SP , Ġm Text Size ) ĊĠĠĠĠĠĠĠ Ġm TextView . setTextColor ( m TextColor ) ĊĠĠĠĠĠĠĠ Ġm TextView . setText ( m Text ) ĊĠĠĠĠĠĠĠ Ġanim ator Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ!= Ġ 0 Ġ&& Ġheight Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator Ġ= Ġcre at Current Animation (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġm Speed Ġ* Ġ 1 0 0 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . repeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator !!. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . d (" De yu "," $ m Text ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcre at Current Animation (): ĠObject Animator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObject Animator . of Float ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm TextView , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" translation X ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- m TextView . get Measured Width (). toFloat () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ