package Ġcom . kn ight . kotlin . library _ widget ĊĊĊ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . animation . Value Animator . Animator Update Listener Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Linear Gradient Ċ import Ġandroid . graphics . Matrix Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . PointF Ċ import Ġandroid . graphics . Shader Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator ĊĊ Ċ /** Ċ Ġ* ĠAuthor : K night Ċ Ġ* ĠTime : 2 0 2 1 / 1 2 / 2 1 Ġ 1 3 : 5 6 Ċ Ġ* ĠDescription : Anim Logo View Ċ Ġ*/ Ċ class ĠAnim Logo View Ġ: ĠView Ġ{ ĊĠĠĠ Ġprivate Ġval ĠDEFAULT _ LOG O Ġ= Ġ" SE AG AZ ER " ĊĠĠĠ Ġprivate Ġval ĠDEFAULT _ TEXT _ P ADDING Ġ= Ġ 1 0 ĊĠĠĠ Ġprivate Ġval ĠAN IM _ LOG O _ DURATION Ġ= Ġ 1 5 0 0 ĊĠĠĠ Ġprivate Ġval ĠAN IM _ LOG O _ GRAD IENT _ DURATION Ġ= Ġ 1 5 0 0 ĊĠĠĠ Ġprivate Ġval ĠAN IM _ LOG O _ TEXT _ SIZE Ġ= Ġ 3 0 ĊĠĠĠ Ġprivate Ġval ĠAN IM _ LOG O _ TEXT _ COLOR : ĠInt Ġ= ĠColor . BLACK ĊĠĠĠ Ġprivate Ġval ĠAN IM _ LOG O _ GRAD IENT _ COLOR : ĠInt Ġ= ĠColor . YELLOW ĊĠĠĠ Ġprivate Ġval Ġm Logo Texts Ġ= ĠSparse Array < String >() ĊĠĠĠ Ġprivate Ġval Ġm Quiet Points Ġ= ĠSparse Array < PointF >() ĊĠĠĠ Ġprivate Ġval Ġm Rad on Points Ġ= ĠSparse Array < PointF >() ĊĠĠĠ Ġprivate Ġvar Ġm Offset Animator : ĠValue Animator ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Gradient Animator : ĠValue Animator ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Paint : ĠPaint ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Text Padding Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm TextColor Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Text Size Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Offset Anim Progress Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Offset Duration Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġis Offset Anim End Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Gradient Duration Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Linear Gradient : ĠLinear Gradient ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Gradient Color Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Gradient Matrix : ĠMatrix ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Matrix Translate Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġis Auto Play Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Width Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Height : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġis Show Gradient Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Logo Offset Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Gradient Listener : ĠAn imator . Animator Listener ? Ġ= Ġnull ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull , Ġdef Attr Style : ĠInt Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġsuper ( context , Ġattribute Set , Ġdef Attr Style ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġta Ġ= Ġcontext . obtain Styled Attributes ( attribute Set , R . style able . Anim Logo View ) ĊĠĠĠĠĠĠĠ Ġvar Ġlogo Name Ġ= Ġta . getString ( R . style able . Anim Logo View _ logo Name ) ĊĠĠĠĠĠĠĠ Ġis Auto Play Ġ= Ġta . getBoolean ( R . style able . Anim Logo View _ auto Play , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġis Show Gradient Ġ= Ġta . getBoolean ( R . style able . Anim Logo View _ show Gradient , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm Offset Duration Ġ= Ġta . getInt ( R . style able . Anim Logo View _ offset Anim Duration , ĠAN IM _ LOG O _ DURATION ) ĊĠĠĠĠĠĠĠ Ġm Gradient Duration Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġta . getInt ( R . style able . Anim Logo View _ gradient Anim Duration , ĠAN IM _ LOG O _ GRAD IENT _ DURATION ) ĊĠĠĠĠĠĠĠ Ġm TextColor Ġ= Ġta . getColor ( R . style able . Anim Logo View _ textColor , ĠAN IM _ LOG O _ TEXT _ COLOR ) ĊĠĠĠĠĠĠĠ Ġm Gradient Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġta . getColor ( R . style able . Anim Logo View _ gradient Color , ĠAN IM _ LOG O _ GRAD IENT _ COLOR ) ĊĠĠĠĠĠĠĠ Ġm Text Padding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġta . get Dimension Pixel Size ( R . style able . Anim Logo View _ text Padding , ĠDEFAULT _ TEXT _ P ADDING ) ĊĠĠĠĠĠĠĠ Ġm Text Size Ġ= Ġta . get Dimension Pixel Size ( R . style able . Anim Logo View _ text Size , ĠAN IM _ LOG O _ TEXT _ SIZE ) ĊĠĠĠĠĠĠĠ Ġm Logo Offset Ġ= Ġta . get Dimension Pixel Offset ( R . style able . Anim Logo View _ vertical Offset , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġta . recycle () ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( logo Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogo Name Ġ= ĠDEFAULT _ LOG O Ġ// Ġdefault Ġlogo ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! logo Name . isNull Or Blank ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill Logo Text Array ( logo Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit Paint () ĊĠĠĠĠĠĠĠ Ġinit Offset Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġfill Ġthe Ġtext Ġto Ġarray ĊĠĠĠ Ġprivate Ġfun Ġfill Logo Text Array ( logo Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( logo Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( m Logo Texts . size () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Logo Texts . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlogo Name . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġlogo Name [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġc . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Logo Texts . put ( i , Ġs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Paint () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Paint Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint ?. set Anti Alias ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint ?. setStyle ( Paint . Style . FILL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint ?. set Stroke Cap ( Paint . Cap . ROUND ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Paint ?. setText Size ( m Text Size . toFloat ()) ĊĠĠĠĠĠĠĠ Ġm Paint ?. setColor ( m TextColor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġinit Ġthe Ġtranslation Ġanimation ĊĠĠĠ Ġprivate Ġfun Ġinit Offset Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Offset Animator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Animator Ġ= ĠValue Animator . of Float ( 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Animator ?. set Interpolator ( Accel erate De cel erate Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Animator ?. add Update Listener ( Animator Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Quiet Points . size () Ġ<= Ġ 0 Ġ|| Ġm Rad on Points . size () Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Animator Update Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Anim Progress Ġ= Ġanimation . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Animator ?. addListener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Gradient Animator Ġ!= Ġnull Ġ&& Ġis Show Gradient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Offset Anim End Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint ?. shader Ġ= Ġm Linear Gradient ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Gradient Animator ?. start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Offset Animator !!. duration Ġ= Ġm Offset Duration . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġinit Ġthe Ġgradient Ġanimation ĊĠĠĠ Ġprivate Ġfun Ġinit Gradient Animation ( width : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( this . java Class . simple Name , Ġ" The Ġview Ġhas Ġnot Ġmeasure , Ġit Ġwill Ġauto Ġinit Ġlater .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( m Gradient Animator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Gradient Animator Ġ= ĠValue Animator . of Int ( 0 , Ġ 2 Ġ* Ġwidth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Gradient Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Gradient Animator ?. addListener ( m Gradient Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Gradient Animator ?. add Update Listener ( Animator Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Matrix Translate Ġ= Ġanimation . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Linear Gradient Ġ= ĠLinear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- width . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( m TextColor , Ġm Gradient Color , Ġm TextColor ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloat ArrayOf ( 0 f , Ġ 0 . 5 f , Ġ 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShader . Tile Mode . CLAMP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Gradient Matrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Gradient Animator !!. duration Ġ= Ġm Gradient Duration . to Long () ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġif Ġ( visibility Ġ== ĠVIS IBLE Ġ&& Ġis Auto Play ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Animator ?. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġrelease Ġanimation ĊĠĠĠĠĠĠĠ Ġm Offset Animator ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isRunning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Animator !!. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Gradient Animator ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . isRunning ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Gradient Animator !!. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĽĳåĲ¬ offset åĬ¨çĶ» çĬ¶æĢģ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠAn imator Listener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Offset Anim Listener ( listener : ĠAn imator . Animator Listener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Offset Animator ?. addListener ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĽĳåĲ¬ gradient åĬ¨çĶ» çĬ¶æĢģ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠAn imator Listener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Gradient Anim Listener ( listener : ĠAn imator . Animator Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Gradient Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¼Ģ åĲ¯åĬ¨ çĶ» ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( visibility Ġ== ĠVIS IBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Offset Animator !!. isRunning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Animator !!. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Offset Anim End Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Offset Animator !!. start () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" Anim Logo View ", Ġ" The Ġview Ġis Ġnot Ġvisible , Ġnot Ġto Ġplay Ġthe Ġanimation Ġ. ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 ) ĊĠĠĠĠĠĠĠ Ġm Width Ġ= Ġw ĊĠĠĠĠĠĠĠ Ġm Height Ġ= Ġh ĊĠĠĠĠĠĠĠ Ġinit Logo Coordinate () ĊĠĠĠĠĠĠĠ Ġinit Gradient Animation ( w ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Logo Coordinate () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Width Ġ== Ġ 0 Ġ|| Ġm Height Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( this . java Class . simple Name , Ġ" The Ġview Ġhas Ġnot Ġmeasure , Ġit Ġwill Ġauto Ġinit Ġlater .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcenter Y Ġ= Ġm Height Ġ/ Ġ 2 f Ġ+ Ġm Paint ?. text Size !! Ġ/ Ġ 2 Ġ+ Ġm Logo Offset ĊĠĠĠĠĠĠĠ Ġ// Ġcalculate Ġthe Ġfinal Ġxy Ġof Ġthe Ġtext ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Length Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Logo Texts . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġm Logo Texts [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Length Ġ= Ġm Paint !!. measure Text ( str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Length Ġ+= Ġif Ġ( i Ġ!= Ġm Logo Texts . size () Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Length Ġ+ Ġm Text Padding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġdraw Ġwidth Ġof Ġthe Ġlogo Ġmust Ġsmall Ġthan Ġthe Ġwidth Ġof Ġthis ĠAnim Logo View ĊĠĠĠĠĠĠĠ Ġcheck ( total Length Ġ<= Ġm Width ) Ġ{ Ġ" The Ġtext Ġof Ġlogo Name Ġis Ġtoo Ġlarge Ġthat Ġthis Ġview Ġcan Ġnot Ġdisplay Ġall Ġtext " Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġstart X Ġ= Ġ( m Width Ġ- Ġtotal Length ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġif Ġ( m Quiet Points . size () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Quiet Points . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Logo Texts . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġm Logo Texts [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Length Ġ= Ġm Paint !!. measure Text ( str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Quiet Points . put ( i , ĠPoint F ( start X , Ġcenter Y )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart X Ġ+= Ġcurrent Length Ġ+ Ġm Text Padding ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġgenerate Ġrandom Ġstart Ġxy Ġof Ġthe Ġtext ĊĠĠĠĠĠĠĠ Ġif Ġ( m Rad on Points . size () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Rad on Points . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Logo Texts . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Rad on Points . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi , ĠPoint F ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . random (). toFloat () Ġ* Ġm Width , ĠMath . random () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat () Ġ* Ġm Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Offset Anim End ) Ġ{ Ġ// Ġoffset Ġanimation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint ?. alpha Ġ= ĠMath . min ( 2 5 5 f , Ġ 2 5 5 Ġ* Ġm Offset Anim Progress Ġ+ Ġ 1 0 0 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Quiet Points . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquiet P Ġ= Ġm Quiet Points [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrad on P Ġ= Ġm Rad on Points [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġrad on P . x Ġ+ Ġ( quiet P . x Ġ- Ġrad on P . x ) Ġ* Ġm Offset Anim Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġrad on P . y Ġ+ Ġ( quiet P . y Ġ- Ġrad on P . y ) Ġ* Ġm Offset Anim Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( m Logo Texts [ i ], Ġx , Ġy , Ġm Paint !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġgradient Ġanimation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Quiet Points . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquiet P Ġ= Ġm Quiet Points [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( m Logo Texts [ i ], Ġquiet P . x , Ġquiet P . y , Ġm Paint !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Gradient Matrix ?. set Translate ( m Matrix Translate . toFloat (), Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Linear Gradient ?. set Local Matrix ( m Gradient Matrix ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® logo åĲį ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlogo Name Ġlogo åĲįç§° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Logo Text ( logo Name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġfill Logo Text Array ( logo Name !! ) ĊĠĠĠĠĠĠĠ Ġ// Ġif Ġset Ġthe Ġnew Ġlogo Name , Ġshould Ġrefresh Ġthe Ġcoordinate Ġagain ĊĠĠĠĠĠĠĠ Ġinit Logo Coordinate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® logo æĸĩåŃĹ åĬ¨ æķĪ æĹ¶ éķ¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġduration Ġ åĬ¨ æķĪ æĹ¶ éķ¿ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Offset Anim Duration ( duration : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Offset Duration Ġ= Ġduration ĊĠĠĠĠĠĠĠ Ġinit Offset Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® logo æĸĩåŃĹ æ¸ Ĳ åıĺ åĬ¨ æķĪ æĹ¶ éķ¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġduration Ġ åĬ¨ æķĪ æĹ¶ éķ¿ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Gradient Anim Duration ( duration : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Gradient Duration Ġ= Ġduration ĊĠĠĠĠĠĠĠ Ġinit Gradient Animation ( m Width ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® logo æĸĩåŃĹ æ¸ Ĳ åıĺ é¢ľèī² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġgradient Color Ġæ¸ Ĳ åıĺ é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Gradient Color ( gradient Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Gradient Color Ġ= Ġgradient Color ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® æĺ¯åĲ¦ æĺ¾ç¤º logo æĸĩåŃĹ æ¸ Ĳ åıĺ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġis Show Gradient Ġæĺ¯åĲ¦ æĺ¾ç¤º logo æ¸ Ĳ åıĺ åĬ¨ æķĪ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsetShow Gradient ( is Show Gradient : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Show Gradient Ġ= Ġis Show Gradient ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® logo åŃĹ ä½ĵ è¾¹ è·Ŀ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpadding Ġ åŃĹ ä½ĵ è¾¹ è·Ŀ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Text Padding ( padding : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Text Padding Ġ= Ġpadding ĊĠĠĠĠĠĠĠ Ġinit Logo Coordinate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® logo åŃĹ ä½ĵ é¢ľèī² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġ åŃĹ ä½ĵ é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset TextColor ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm TextColor Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinit Paint () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® logo åŃĹ ä½ĵ å¤§å°ı ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsize Ġ åŃĹ ä½ĵ å¤§å°ı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Text Size ( size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Text Size Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġinit Paint () ĊĠĠĠ Ġ} ĊĊ Ċ }