package Ġcom . kon den ko . po cket w aka . ui Ċ Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Accel erate Interpolator Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . Int Range Ċ import Ġandroidx . core . animation . do On End Ċ import Ġandroidx . core . view . children Ċ import Ġcom . kon den ko . po cket w aka . R Ċ import Ġcom . kon den ko . po cket w aka . utils . exceptions . Illegal View Usage Exception Ċ import Ġcom . kon den ko . po cket w aka . utils . extensions . use Attributes Ċ import Ġkotlin . math . round ToInt Ċ Ċ class ĠLoading View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠ Ġdef Style Res : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠLinearLayout ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĊĠĠĠ Ġvar Ġdots Number : ĠInt Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstruct () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġdot Drawable : ĠDrawable ? Ġ= Ġcontext . get Drawable ( R . drawable . loading _ dot ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstruct () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġdot Margin : ĠInt Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstruct () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠFrom Ġthe Ġoriginal Ġposition Ġto Ġthe Ġup most Ġposition ĊĠĠĠ Ġprivate Ġval Ġtravel Distance Upper Ġ= Ġ 6 f ĊĊĠĠĠ Ġ// ĠFrom Ġthe Ġoriginal Ġposition Ġto Ġthe Ġdown most Ġposition ĊĠĠĠ Ġprivate Ġval Ġtravel Distance Lower Ġ= Ġ 1 f ĊĊĠĠĠ Ġprivate Ġval Ġover shoot Down To Orig Ġ= Ġ 0 . 5 f ĊĊĠĠĠ Ġ// ĠFrom Ġthe Ġoriginal Ġposition Ġto Ġthe Ġup most Ġposition ĊĠĠĠ Ġprivate Ġval Ġtravel Duration Orig To Up Ġ= Ġ 1 2 0 L ĊĊĠĠĠ Ġ// ĠFrom Ġthe Ġup most Ġposition Ġto Ġthe Ġdown most Ġposition ĊĠĠĠ Ġprivate Ġval Ġtravel Duration Up To Down Ġ= Ġ 1 5 0 L ĊĊĠĠĠ Ġ// ĠFrom Ġthe Ġdown most Ġposition Ġto Ġthe Ġoriginal Ġposition ĊĠĠĠ Ġprivate Ġval Ġtravel Duration Down To Orig Ġ= Ġ 4 0 L ĊĊĠĠĠ Ġprivate Ġval Ġtravel Duration Down Over shoot Ġ= Ġ 1 0 L ĊĊĠĠĠ Ġprivate Ġval Ġanim Duration Ġ= Ġcalculate Anim Duration () ĊĊĠĠĠ Ġprivate Ġval Ġanimations Offset Ms Ġ= Ġ 1 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġuse Attributes ( attrs , ĠR . style able . Loading View , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots Number Ġ= Ġget Integer ( R . style able . Loading View _ dots _ number , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdot Margin Ġ= Ġget Dimension ( R . style able . Loading View _ dot _ margin , Ġdot Margin . toFloat ()). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdot Drawable Ġ= Ġget Drawable ( R . style able . Loading View _ dot _ drawable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠH ORIZONTAL ĊĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġconstruct () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconstruct () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfinal Dot Drawable Ġ= Ġdot Drawable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegal View Usage Exception (" Dot Ġdrawable Ġmust Ġbe Ġset ") ĊĠĠĠĠĠĠĠ Ġremove All Views () ĊĠĠĠĠĠĠĠ Ġweight Sum Ġ= Ġdots Number . toFloat () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. dots Number ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( ImageView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( final Dot Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLayout Params ( final Dot Drawable . intrinsic Width , Ġfinal Dot Drawable . intrinsic Height , Ġ 1 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Margins ( dot Margin , Ġ 0 , Ġdot Margin , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstart Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġchildren . forEach Indexed Ġ{ Ġindex , Ġdot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdot . do Animation ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Use Property Access Syntax ") ĊĠĠĠ Ġprivate Ġfun ĠView . do Animation (@ Int Range ( from Ġ= Ġ 0 ) Ġdot Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġy Animator ( distance : ĠFloat , Ġsetup : ĠObject Animator . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠObject Animator Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObject Animator . of Float ( this , ĠView . TRANSL ATION _ Y , Ġdistance ). apply ( setup ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġorig To Up Ġ= Ġy Animator (- travel Distance Upper ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġtravel Duration Orig To Up ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠDec el erate Interpolator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġup To Down Ġ= Ġy Animator ( travel Distance Upper Ġ+ Ġtravel Distance Lower ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġtravel Duration Orig To Up ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate Interpolator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdown To Orig Ġ= Ġy Animator (- travel Distance Lower Ġ+ Ġover shoot Down To Orig ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġtravel Duration Orig To Up Ġ- Ġtravel Duration Down Over shoot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠDec el erate Interpolator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġover shoot Down Ġ= Ġy Animator ( over shoot Down To Orig ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġtravel Duration Down To Orig Ġ/ Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate Interpolator () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdelay Ġ= Ġdot Index Ġ* Ġanim Duration Ġ+ Ġanimations Offset Ms ĊĠĠĠĠĠĠĠ Ġval Ġrepeat Delay Ġ= Ġ( dots Number Ġ- Ġ 1 ). coerce At Least ( 1 ) Ġ* Ġanim Duration Ġ- Ġanim Duration ĊĠĠĠĠĠĠĠ Ġval Ġdo On End Ġ= Ġ{ Ġset : ĠAn imator Set Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset . do On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . set Start Delay ( repeat Delay ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( Animator Set ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Se quent ially ( orig To Up , Ġup To Down , Ġdown To Orig , Ġover shoot Down ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Duration ( anim Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Start Delay ( delay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo On End ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Anim Duration () Ġ= Ġtravel Duration Orig To Up Ġ+ Ġtravel Duration Up To Down Ġ+ Ġtravel Duration Down To Orig Ċ Ċ } Ċ