package Ġcom . ag raw als une et . dots loader . loaders Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . view . animation . Translate Animation Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . ag raw als une et . dots loader . R Ċ import Ġcom . ag raw als une et . dots loader . basic views . Circle View Ċ import Ġcom . ag raw als une et . dots loader . basic views . Three Dot s Base View ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġball u Ġon Ġ 1 3 / 0 8 / 1 7 . Ċ Ġ*/ Ċ class ĠBall Pulse ProgressBar Ġ: ĠThree Dot s Base View Ġ{ ĊĊĠĠĠ Ġvar Ġfirst Delay Duration : ĠInt Ġ= Ġ 1 0 0 ĊĠĠĠ Ġvar Ġsecond Delay Duration : ĠInt Ġ= Ġ 2 0 0 ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġdots Radius : ĠInt , Ġdots Dist : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Dot Color : ĠInt , Ġsecond Dot Color : ĠInt , Ġthird Dot Color : ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġsuper ( context , Ġdots Radius , Ġdots Dist , Ġfirst Dot Color , Ġsecond Dot Color , Ġthird Dot Color ){ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Attributes ( attrs ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Attributes ( attrs ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Attributes ( attrs : ĠAttributeSet ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Lazy Loader , Ġ 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġthis . dots Radius Ġ= Ġtyped Array . get Dimension Pixel Size ( R . style able . Lazy Loader _ lazy loader _ dots Radius , Ġ 3 0 ) ĊĠĠĠĠĠĠĠ Ġthis . dots Dist Ġ= Ġtyped Array . get Dimension Pixel Size ( R . style able . Lazy Loader _ lazy loader _ dots Dist , Ġ 1 5 ) ĊĠĠĠĠĠĠĠ Ġthis . first Dot Color Ġ= Ġtyped Array . getColor ( R . style able . Lazy Loader _ lazy loader _ first Dot Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getColor ( R . color . loader _ selected )) ĊĠĠĠĠĠĠĠ Ġthis . second Dot Color Ġ= Ġtyped Array . getColor ( R . style able . Lazy Loader _ lazy loader _ second Dot Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getColor ( R . color . loader _ selected )) ĊĠĠĠĠĠĠĠ Ġthis . third Dot Color Ġ= Ġtyped Array . getColor ( R . style able . Lazy Loader _ lazy loader _ third Dot Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getColor ( R . color . loader _ selected )) ĊĊĠĠĠĠĠĠĠ Ġthis . anim Duration Ġ= Ġtyped Array . getInt ( R . style able . Lazy Loader _ lazy loader _ anim Dur , Ġ 5 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġthis . interpol ator Ġ= ĠAnimation Utils . load Interpolator ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getResource Id ( R . style able . Lazy Loader _ lazy loader _ interpol ator , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . anim . linear _ interpol ator )) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . first Delay Duration Ġ= Ġtyped Array . getInt ( R . style able . Lazy Loader _ lazy loader _ first Delay Dur , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġthis . second Delay Duration Ġ= Ġtyped Array . getInt ( R . style able . Lazy Loader _ lazy loader _ second Delay Dur , Ġ 2 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcal Width Ġ= Ġ( 6 Ġ* Ġdots Radius ) Ġ+ Ġ( 2 Ġ* Ġdots Dist ) ĊĠĠĠĠĠĠĠ Ġval Ġcal Height Ġ= Ġ 6 Ġ* Ġdots Radius ĊĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( cal Width , Ġcal Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġremove All Views () ĊĠĠĠĠĠĠĠ Ġremove All Views In Layout () ĊĊĠĠĠĠĠĠĠ Ġfirst Circle Ġ= ĠCircle View ( context , Ġdots Radius , Ġfirst Dot Color ) ĊĠĠĠĠĠĠĠ Ġsecond Circle Ġ= ĠCircle View ( context , Ġdots Radius , Ġsecond Dot Color ) ĊĠĠĠĠĠĠĠ Ġthird Circle Ġ= ĠCircle View ( context , Ġdots Radius , Ġthird Dot Color ) ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams (( 2 Ġ* Ġdots Radius ), Ġ 2 Ġ* Ġdots Radius ) ĊĠĠĠĠĠĠĠ Ġparams . left Margin Ġ= Ġdots Dist ĊĊĠĠĠĠĠĠĠ Ġset Vertical Gravity ( Gravity . BOTTOM ) ĊĊĠĠĠĠĠĠĠ Ġadd View ( first Circle ) ĊĠĠĠĠĠĠĠ Ġadd View ( second Circle , Ġparams ) ĊĠĠĠĠĠĠĠ Ġadd View ( third Circle , Ġparams ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġloader View Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġview Tree Observer . add On Global Layout Listener ( object Ġ: ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Loading () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv to Ġ= Ġloader View . view Tree Observer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv to . remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Loading () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtrans 1 Anim Ġ= Ġget Translate Anim () ĊĠĠĠĠĠĠĠ Ġfirst Circle . start Animation ( trans 1 Anim ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtrans 2 Anim Ġ= Ġget Translate Anim () ĊĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Circle . start Animation ( trans 2 Anim ) ĊĠĠĠĠĠĠĠ Ġ}, Ġfirst Delay Duration . to Long ()) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġtrans 3 Anim Ġ= Ġget Translate Anim () ĊĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthird Circle . start Animation ( trans 3 Anim ) ĊĠĠĠĠĠĠĠ Ġ}, Ġsecond Delay Duration . to Long ()) ĊĊĠĠĠĠĠĠĠ Ġtrans 3 Anim . set Animation Listener ( object Ġ: ĠAnimation . Animation Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAnimation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAnimation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAnimation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Translate Anim (): ĠTranslate Animation Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrans Anim Ġ= ĠTranslate Animation ( 0 f , Ġ 0 f , Ġ 0 f , Ġ(- ( 4 Ġ* Ġdots Radius ). toFloat ())) ĊĠĠĠĠĠĠĠ Ġtrans Anim . duration Ġ= Ġanim Duration . to Long () ĊĠĠĠĠĠĠĠ Ġtrans Anim . fill After Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtrans Anim . repeat Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġtrans Anim . repeat Mode Ġ= ĠAnimation . RE VERSE ĊĠĠĠĠĠĠĠ Ġtrans Anim . interpol ator Ġ= Ġinterpol ator ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrans Anim ĊĠĠĠ Ġ} Ċ }