package Ġcom . sh uy u . common recycler . x recycler . progress indicator . indicator čĊč Ċ import Ġandroid . animation . Animator č Ċ import Ġandroid . animation . Value Animator č Ċ import Ġandroid . graphics . Canvas č Ċ import Ġandroid . graphics . Paint čĊč Ċ import Ġjava . util . ArrayList čĊč Ċ /** čĊ Ġ* ĠCreated Ġby ĠJack Ġon Ġ 2 0 1 5 / 1 0 / 1 9 . čĊ Ġ*/ č Ċ open Ġclass ĠBall Beat Indicator Ġ: ĠBase Indicator Controller () Ġ{ čĊčĊĠĠĠ Ġprivate Ġval Ġscale Float s Ġ= Ġfloat ArrayOf ( SCALE , ĠSC ALE , ĠSC ALE ) čĊčĊĠĠĠ Ġinternal Ġvar Ġal ph as Ġ= Ġint ArrayOf ( ALPHA , ĠAL PH A , ĠAL PH A ) čĊčĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas , Ġpaint : ĠPaint ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġcircle Spacing Ġ= Ġ 4 f čĊĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġ( width Ġ- Ġcircle Spacing Ġ* Ġ 2 ) Ġ/ Ġ 6 čĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġwidth Ġ/ Ġ 2 Ġ- Ġ( radius Ġ* Ġ 2 Ġ+ Ġcircle Spacing ) čĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġ( height Ġ/ Ġ 2 ). toFloat () čĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 2 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . save () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtranslateX Ġ= Ġx Ġ+ Ġradius Ġ* Ġ 2 Ġ* Ġi Ġ+ Ġcircle Spacing Ġ* Ġi čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . translate ( translate X , Ġy ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . scale ( scale Float s [ i ], Ġscale Float s [ i ]) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . alpha Ġ= Ġal ph as [ i ] čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( 0 f , Ġ 0 f , Ġradius , Ġpaint ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . restore () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġcreate Animation (): ĠList < Animator > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġanim ators Ġ= ĠArrayList < Animator >() čĊĠĠĠĠĠĠĠ Ġval Ġdelays Ġ= Ġint ArrayOf ( 3 5 0 , Ġ 0 , Ġ 3 5 0 ) čĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 2 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Anim Ġ= ĠValue Animator . of Float ( 1 f , Ġ 0 . 7 5 f , Ġ 1 f ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Anim . duration Ġ= Ġ 7 0 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Anim . repeat Count Ġ= Ġ- 1 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Anim . start Delay Ġ= Ġdelays [ i ]. to Long () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Anim . add Update Listener Ġ{ Ġanimation Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Float s [ i ] Ġ= Ġanimation . animated Value Ġas ĠFloat čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Anim . start () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Anim Ġ= ĠValue Animator . of Int ( 2 5 5 , Ġ 5 1 , Ġ 2 5 5 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Anim . duration Ġ= Ġ 7 0 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Anim . repeat Count Ġ= Ġ- 1 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Anim . start Delay Ġ= Ġdelays [ i ]. to Long () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Anim . add Update Listener Ġ{ Ġanimation Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġal ph as [ i ] Ġ= Ġanimation . animated Value Ġas ĠInt čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Anim . start () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ators . add ( scale Anim ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ators . add ( alpha Anim ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġanim ators čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġval ĠSC ALE Ġ= Ġ 1 . 0 f čĊčĊĠĠĠĠĠĠĠ Ġval ĠAL PH A Ġ= Ġ 2 5 5 čĊĠĠĠ Ġ} čĊč Ċ } čĊ