package Ġcom . ang cy o . media . audio . widget Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġcom . ang cy o . media . R Ċ import Ġcom . ang cy o . widget . base . getColor Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ è¯Ń éŁ³ å½ķ åĪ¶ , Ġ éŁ³ é¢ĳ æĮ ¯ å¹ ħ æıĲç¤º æİ§ä»¶ Ċ Ġ* ĠEmail : ang cy o @ 1 2 6 . com Ċ Ġ* Ġ@ author Ġang cy o Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 0 4 / 1 3 Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠSh en Z hen ĠO & M ĠCloud ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ class ĠRecord Anim View ( context : ĠContext , Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĊĠĠĠ ĠView ( context , Ġattribute Set ) Ġ{ ĊĊĠĠĠ Ġval Ġpaint : ĠPaint Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġmeter Color Ġ= ĠColor . WHITE ĊĊĠĠĠ Ġvar Ġmeter Dark Color Ġ= Ġget Color ( R . color . text _ sub _ color ) ĊĊĠĠĠ Ġval Ġdp : ĠFloat Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġresources . display Metrics . density ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtemp t Rect : ĠRect F Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRect F () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtemp t Path : ĠPath Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPath () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æĮ ¯ å¹ ħ çļĦ æķ°éĩı ĊĠĠĠ Ġvar Ġcount Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æĮ ¯ å¹ ħ ä¹ĭéĹ´çļĦ éĹ´ éļĶ ĊĠĠĠ Ġvar Ġspace Ġ= Ġ 6 Ġ* Ġdp ĊĊĠĠĠ Ġ// var Ġdraw Height Ġ= Ġmeasured Height Ġ- Ġpadding Top Ġ- Ġpadding Bottom ĊĠĠĠ Ġ// æĮ ¯ å¹ ħ çļĦ é«ĺåº¦ ĊĠĠĠ Ġvar Ġline Height Ġ= Ġ 8 Ġ* Ġdp Ġ// ( draw Height Ġ- Ġspace Ġ* Ġ( count Ġ- Ġ 1 )) Ġ/ Ġcount ĊĊĠĠĠ Ġ// æĮ ¯ å¹ ħ å®½åº¦ éĢĴ å¢ŀ çļĦ éĩı ĊĠĠĠ Ġvar Ġwidth Step Ġ= Ġ 6 Ġ* Ġdp ĊĊĠĠĠ Ġ// ç¼º åı£ çļĦ å®½åº¦ ĊĠĠĠ Ġvar Ġgap Width Ġ= Ġ 5 Ġ* Ġdp ĊĊĠĠĠ Ġ// æľĢå°ı æĮ ¯ å¹ ħ çļĦ å®½åº¦ ĊĠĠĠ Ġvar ĠminWidth Ġ= Ġ 2 0 Ġ* Ġdp ĊĊĠĠĠ Ġvar Ġdraw Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġpadding Left ĊĠĠĠĠĠĠĠ Ġvar Ġbottom Ġ= Ġmeasured Height Ġ- Ġpadding Bottom ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp t Rect . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ- Ġline Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ+ ĠminWidth Ġ+ Ġi Ġ* Ġwidth Step , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ( bottom Ġ- Ġline Height Ġ- Ġspace ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp t Path . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp t Path . moveTo ( tempt Rect . left , Ġtemp t Rect . top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp t Path . lineTo ( tempt Rect . right , Ġtemp t Rect . top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp t Path . lineTo ( tempt Rect . right Ġ- Ġgap Width , Ġtemp t Rect . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp t Path . lineTo ( tempt Rect . left , Ġtemp t Rect . bottom ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// canvas . draw Rect ( tempt Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġdraw Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġmeter Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġmeter Dark Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Path ( tempt Path , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrandom : ĠRandom Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRandom ( System Clock . elapsed Realtime Nan os ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġanimation : ĠValue Animator Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠObject Animator . of Int ( 0 , Ġ 3 6 0 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠValue Animator . RE START ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Count Ġ= Ġrandom . nextInt ( count Ġ- Ġ 1 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate On Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrandom Time Ġ= Ġ 3 0 0 L ĊĊĠĠĠ Ġval Ġrunnable : ĠRunnable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Count Ġ= Ġrandom . nextInt ( count Ġ- Ġ 1 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate On Animation () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( draw Count Ġ> Ġcount Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( run nable , Ġrandom Time Ġ/ Ġ 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( draw Count Ġ> Ġcount Ġ- Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( run nable , Ġrandom Time Ġ/ Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( draw Count Ġ> Ġcount Ġ- Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( run nable , Ġrandom Time Ġ/ Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( draw Count Ġ> Ġcount Ġ- Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( run nable , Ġrandom Time Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( run nable , Ġrandom Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġ// post Delayed ( run nable , Ġrandom Time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġ// remove Callbacks ( run nable ) ĊĠĠĠ Ġ} Ċ Ċ }