package Ġcom . tz t . customize . property animation . fragment Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Type Evaluator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . PointF Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . tz t . common . base de pen cy . Base Fragment Ċ import Ġcom . tz t . customize . property animation . R Ċ import Ġkotlinx . android . synt hetic . main . fragment _ type _ evaluator .* ĊĊ Ċ /** Ċ Ġ* ĠDescription : Ġ èĩªå®ļä¹ī å±ŀæĢ§ å±ŀæĢ§ åĬ¨çĶ» Ċ Ġ* Ċ Ġ* Ġ@ author Ġtang zh ent ao Ċ Ġ* Ġ@ since Ġ 2 0 2 0 / 5 / 8 Ċ Ġ*/ Ċ class ĠType Evaluator Fragment : ĠBase Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcolor System Animator : ĠObject Animator ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcolor Custom Animator : ĠObject Animator ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpoint Animator : ĠObject Animator ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Res ID (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ type _ evaluator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor System Animator Ġ= ĠObject Animator . of Argb ( cp v System , Ġ" color ", ĠColor . parse Color ("# ffff 0 0 0 0 "), ĠColor . parse Color ("# ff 0 0 ff 0 0 ")). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 2 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcolor Custom Animator Ġ= ĠObject Animator . of Object ( cp v Custom , Ġ" color ", ĠColor Evaluator (), ĠColor . parse Color ("# ffff 0 0 0 0 "), ĠColor . parse Color ("# ff 0 0 ff 0 0 ")). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 2 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpoint Animator Ġ= ĠObject Animator . of Object ( pp v Custom , Ġ" position ", ĠPoint FE valu ator (), ĠPoint F ( 0 f , Ġ 0 f ), ĠPoint F ( 1 f , Ġ 1 f )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 2 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn Animate . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor System Animator . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Custom Animator . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoint Animator . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠColor Evaluator : ĠType Evaluator < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstart H sv Ġ= ĠFloat Array ( 3 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġend H sv Ġ= ĠFloat Array ( 3 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġout H sv Ġ= ĠFloat Array ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġevaluate ( fraction : ĠFloat , Ġstart Value : ĠInt , Ġend Value : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠæĬ Ĭ ĠAR GB Ġ è½¬æį¢ æĪĲ ĠH SV ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor . color To H SV ( start Value , Ġstart H sv ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor . color To H SV ( end Value , Ġend H sv ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è®¡ç®Ĺ å½ĵåīį åĬ¨çĶ» å®ĮæĪĲ åº¦ ï¼Ī fraction ï¼ī æīĢ å¯¹åºĶçļĦ é¢ľèī² åĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( end H sv [ 0 ] Ġ- Ġstart H sv [ 0 ] Ġ> Ġ 1 8 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend H sv [ 0 ] Ġ-= Ġ 3 6 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( end H sv [ 0 ] Ġ- Ġstart H sv [ 0 ] Ġ< Ġ- 1 8 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend H sv [ 0 ] Ġ+= Ġ 3 6 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġout H sv [ 0 ] Ġ= Ġstart H sv [ 0 ] Ġ+ Ġfraction Ġ* Ġ( end H sv [ 0 ] Ġ- Ġstart H sv [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( out H sv [ 0 ] Ġ> Ġ 3 6 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout H sv [ 0 ] Ġ-= Ġ 3 6 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( out H sv [ 0 ] Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout H sv [ 0 ] Ġ+= Ġ 3 6 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout H sv [ 1 ] Ġ= Ġstart H sv [ 1 ] Ġ+ Ġfraction Ġ* Ġ( end H sv [ 1 ] Ġ- Ġstart H sv [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout H sv [ 2 ] Ġ= Ġstart H sv [ 2 ] Ġ+ Ġfraction Ġ* Ġ( end H sv [ 2 ] Ġ- Ġstart H sv [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġstart Value Ġshr Ġ 2 4 Ġ+ Ġ(( end Value Ġshr Ġ 2 4 Ġ- Ġstart Value Ġshr Ġ 2 4 ) Ġ* Ġfraction ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠColor . H SV To Color ( alpha , Ġout H sv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠPoint FE valu ator : ĠType Evaluator < PointF > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġevaluate ( fraction : ĠFloat , Ġstart Value : ĠPoint F , Ġend Value : ĠPoint F ): ĠPoint F Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Point Ġ= ĠPoint F ( 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Point . x Ġ= Ġstart Value . x Ġ Ġ+ Ġfraction Ġ* Ġ( end Value . x Ġ- Ġstart Value . x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Point . y Ġ= Ġstart Value . y Ġ Ġ+ Ġfraction Ġ* Ġ( end Value . y Ġ- Ġstart Value . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew Point ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }