package Ġcom . and resh j 8 7 . radial pager Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . constraint . Constraint Layout Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Transformation Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġde . hd od enh of . circle image view . Circle ImageView Ċ import Ġjava . util .* Ċ Ċ class ĠRad ial Pager View Renderer < T >: ĠRad ial Pager Movement Listener Ġ{ ĊĊĠ Ġprivate Ġval ĠLAY ER _ HIDDEN _ INNER Ġ= Ġ 0 ĊĠ Ġprivate Ġval ĠLAY ER _ HIDDEN _ OUT ER Ġ= Ġ 4 ĊĊĠ Ġprivate Ġval ĠLAY ERS _ VISIBLE Ġ= Ġ 3 ĊĠ Ġprivate Ġval ĠLAY ERS _ TOTAL Ġ= Ġ 5 ĊĊĠ Ġprivate Ġval ĠITE MS _ PER _ LAYER Ġ= Ġ 6 ĊĠ Ġprivate Ġval ĠITE MS _ VISIBLE Ġ= ĠLAY ERS _ VISIBLE Ġ* ĠITE MS _ PER _ LAYER ĊĊĠ Ġ// private Ġval ĠMAX _ LAY ERS Ġ= Ġ 3 ĊĠ Ġ// private Ġval ĠMAX _ ITEMS _ PER _ LAYER Ġ= Ġ 6 ĊĠ Ġ// private Ġval ĠMAX _ ITEMS Ġ= ĠMAX _ LAY ERS Ġ* ĠMAX _ ITEMS _ PER _ LAYER ĊĊĠ Ġprivate Ġval Ġsnap Animation Duration : ĠLong Ġ= Ġ 1 5 0 ĊĠ Ġprivate Ġval Ġitem Sizes : ĠArrayList < Float > Ġ= ĠArrayList ( LAY ERS _ TOTAL ) ĊĠ Ġprivate Ġval Ġitem Radius : ĠArrayList < Float > Ġ= ĠArrayList ( LAY ERS _ TOTAL ) ĊĠ Ġprivate Ġval Ġitem Odd Angles : ĠArrayList < Int > Ġ= ĠArrayList ( ITEMS _ PER _ LAYER ) ĊĠ Ġprivate Ġval Ġitem Even Angles : ĠArrayList < Int > Ġ= ĠArrayList ( ITEMS _ PER _ LAYER ) ĊĊĠ Ġprivate Ġvar Ġcontext : ĠContext ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġbase View : ĠView ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġconstraint Layout : ĠConstraint Layout ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġcenter View : ĠImageView ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġitem Views Ġ= ĠLinkedList < View >() ĊĊĠ Ġfun Ġinit ( context : ĠContext , Ġbase View : ĠView ) Ġ{ ĊĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠ Ġthis . base View Ġ= Ġbase View ĊĠĠĠ Ġconstraint Layout Ġ= Ġbase View !!. findViewById ( R . id . constraint _ layout ) ĊĠĠĠ Ġcenter View Ġ= Ġbase View ?. findViewById ( R . id . center _ item ) ĊĊĠĠĠ Ġitem Sizes . add ( context . resources . get Dimension ( R . dim en . radial pager _ center _ item _ size )) ĊĠĠĠ Ġitem Sizes . add ( context . resources . get Dimension ( R . dim en . radial pager _ first _ level _ item _ size )) ĊĠĠĠ Ġitem Sizes . add ( context . resources . get Dimension ( R . dim en . radial pager _ second _ level _ item _ size )) ĊĠĠĠ Ġitem Sizes . add ( context . resources . get Dimension ( R . dim en . radial pager _ third _ level _ item _ size )) ĊĠĠĠ Ġitem Sizes . add ( context . resources . get Dimension ( R . dim en . radial pager _ four th _ level _ item _ size )) ĊĠĠĠ Ġitem Sizes . add ( context . resources . get Dimension ( R . dim en . radial pager _ f ifth _ level _ item _ size )) ĊĊĠĠĠ Ġitem Radius . add ( context . resources . get Dimension ( R . dim en . radial pager _ center _ level _ radius )) ĊĠĠĠ Ġitem Radius . add ( context . resources . get Dimension ( R . dim en . radial pager _ first _ level _ radius )) ĊĠĠĠ Ġitem Radius . add ( context . resources . get Dimension ( R . dim en . radial pager _ second _ level _ radius )) ĊĠĠĠ Ġitem Radius . add ( context . resources . get Dimension ( R . dim en . radial pager _ third _ level _ radius )) ĊĠĠĠ Ġitem Radius . add ( context . resources . get Dimension ( R . dim en . radial pager _ four th _ level _ radius )) ĊĠĠĠ Ġitem Radius . add ( context . resources . get Dimension ( R . dim en . radial pager _ f ifth _ level _ radius )) ĊĊĠĠĠ Ġitem Odd Angles . add ( context . resources . getInteger ( R . integer . radial pager _ odd _ level _ first _ item _ angle )) ĊĠĠĠ Ġitem Odd Angles . add ( context . resources . getInteger ( R . integer . radial pager _ odd _ level _ second _ item _ angle )) ĊĠĠĠ Ġitem Odd Angles . add ( context . resources . getInteger ( R . integer . radial pager _ odd _ level _ third _ item _ angle )) ĊĠĠĠ Ġitem Odd Angles . add ( context . resources . getInteger ( R . integer . radial pager _ odd _ level _ four th _ item _ angle )) ĊĠĠĠ Ġitem Odd Angles . add ( context . resources . getInteger ( R . integer . radial pager _ odd _ level _ f ifth _ item _ angle )) ĊĠĠĠ Ġitem Odd Angles . add ( context . resources . getInteger ( R . integer . radial pager _ odd _ level _ six th _ item _ angle )) ĊĊĠĠĠ Ġitem Even Angles . add ( context . resources . getInteger ( R . integer . radial pager _ even _ level _ first _ item _ angle )) ĊĠĠĠ Ġitem Even Angles . add ( context . resources . getInteger ( R . integer . radial pager _ even _ level _ second _ item _ angle )) ĊĠĠĠ Ġitem Even Angles . add ( context . resources . getInteger ( R . integer . radial pager _ even _ level _ third _ item _ angle )) ĊĠĠĠ Ġitem Even Angles . add ( context . resources . getInteger ( R . integer . radial pager _ even _ level _ four th _ item _ angle )) ĊĠĠĠ Ġitem Even Angles . add ( context . resources . getInteger ( R . integer . radial pager _ even _ level _ f ifth _ item _ angle )) ĊĠĠĠ Ġitem Even Angles . add ( context . resources . getInteger ( R . integer . radial pager _ even _ level _ six th _ item _ angle )) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġsnap F ow ard ( movement Percentage : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġfrom Percentage Ġ= Ġmovement Percentage ĊĠĠĠ Ġval Ġto Percentage Ġ= Ġif Ġ( movement Percentage Ġ<= Ġ 5 0 ) Ġ 0 Ġelse Ġ 1 0 0 ĊĊĠĠĠ Ġval Ġsnap Forward Animation : ĠAnimation Ġ= Ġobject : ĠAnimation () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġapply Transformation ( interpol ated Time : ĠFloat , Ġt : ĠTransformation ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Percentage Ġ= Ġfrom Percentage Ġ+ Ġ(( to Percentage Ġ- Ġfrom Percentage ) Ġ* Ġinterpolated Time ) ĊĠĠĠĠĠĠĠ Ġmove Forward ( current Percentage . toInt ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsnap Forward Animation . duration Ġ= Ġsnap Animation Duration ĊĠĠĠ Ġconstraint Layout !!. start Animation ( snap Forward Animation ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġsnap Back wards ( movement Percentage : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġfrom Percentage Ġ= Ġmovement Percentage ĊĠĠĠ Ġval Ġto Percentage Ġ= Ġif Ġ( movement Percentage Ġ<= Ġ 5 0 ) Ġ 0 Ġelse Ġ 1 0 0 ĊĊĠĠĠ Ġval Ġsnap Back wards Animation : ĠAnimation Ġ= Ġobject : ĠAnimation () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġapply Transformation ( interpol ated Time : ĠFloat , Ġt : ĠTransformation ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Percentage Ġ= Ġfrom Percentage Ġ+ Ġ(( to Percentage Ġ- Ġfrom Percentage ) Ġ* Ġinterpolated Time ) ĊĠĠĠĠĠĠĠ Ġmove Back wards ( current Percentage . toInt ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsnap Back wards Animation . duration Ġ= Ġsnap Animation Duration ĊĠĠĠ Ġconstraint Layout !!. start Animation ( snap Back wards Animation ) ĊĠ Ġ} ĊĊĠ Ġ// ĠTODO Ġwhen Ġmoving Ġforward Ġ-> Ġlayer Ġ 0 Ġdoesn 't Ġmove ĊĠ Ġoverride Ġfun Ġmove Forward ( movement Percentage : ĠInt ) Ġ{ ĊĠĠĠ ĠLog . d ( java Class . simple Name , Ġ"[ Moving Ġforward ] Ġ$ movement Percentage ") ĊĠĠĠ Ġvar Ġdistance Percentage Ġ= Ġmovement Percentage ĊĠĠĠ Ġif Ġ( movement Percentage Ġ> Ġ 1 0 0 ) Ġdistance Percentage Ġ= Ġ 1 0 0 ĊĊĠĠĠ Ġvar Ġlayer : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġvar Ġitem Per Layer : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġitem Views . forEach Ġ{ ĊĠĠĠĠĠ Ġval Ġlayout Params : ĠConstraint Layout . LayoutParams Ġ= Ġit . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĊĠĠĠĠĠ Ġif Ġ( item Per Layer Ġ>= ĠITE MS _ PER _ LAYER ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlayer ++ ĊĠĠĠĠĠĠĠ Ġitem Per Layer Ġ= Ġ 0 ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġtotal Size Ġ= Ġitem Sizes . get ( layer Ġ- Ġ 1 ) Ġ- Ġitem Sizes . get ( layer ) ĊĠĠĠĠĠ Ġif Ġ( layer Ġ== Ġ 1 Ġ&& Ġitem Per Layer Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ" total Size Ġbetween Ġlayer Ġ 1 Ġand Ġ 0 Ġ= Ġ" Ġ+ Ġtotal Size ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġtotal Radius Ġ= Ġitem Radius . get ( layer ) Ġ- Ġitem Radius . get ( layer Ġ- Ġ 1 ) ĊĠĠĠĠĠ Ġval Ġtotal Even Angle Ġ= Ġ( item Even Angles . get ( item Per Layer ) Ġ- Ġitem Odd Angles . get ( Ġ( item Per Layer - 1 ). module ( 6 ) Ġ )). module ( 3 6 0 ) ĊĠĠĠĠĠ Ġval Ġtotal Odd Angle Ġ= Ġ( item Odd Angles . get ( item Per Layer ) Ġ- Ġitem Even Angles . get ( Ġ( item Per Layer - 1 ). module ( 6 ) Ġ )). module ( 3 6 0 ) ĊĠĠĠĠĠ Ġval Ġtotal Angle Ġ= Ġif Ġ( layer . is Even ()) Ġtotal Even Angle Ġelse Ġtotal Odd Angle ĊĊĠĠĠĠĠ Ġval Ġd Size Ġ= Ġ( distance Percentage Ġ* Ġtotal Size ) Ġ/ Ġ 1 0 0 ĊĠĠĠĠĠ Ġval Ġd Radius Ġ= Ġ( distance Percentage Ġ* Ġtotal Radius ) Ġ/ Ġ 1 0 0 ĊĠĠĠĠĠ Ġval Ġd Angle Ġ= Ġ( distance Percentage Ġ* Ġtotal Angle ) Ġ/ Ġ 1 0 0 ĊĊĠĠĠĠĠ Ġval Ġcurrent Size Ġ= Ġitem Sizes . get ( layer ) Ġ+ Ġd Size ĊĠĠĠĠĠ Ġif Ġ( layer Ġ== Ġ 1 Ġ&& Ġitem Per Layer Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ" Layer [ 0 ]. size Ġ= Ġ" Ġ+ Ġitem Sizes . get ( layer - 1 )) ĊĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ" Actual ĠCurrent Layer Size Ġ= Ġ" Ġ+ Ġlayout Params . width ) ĊĊĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ" Percentage Ġ" Ġ+ Ġdistance Percentage ) ĊĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ" d Size Ġ= Ġ" Ġ+ Ġd Size ) ĊĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ" Calculated Ġcurrent Size Ġ= Ġ" Ġ+ Ġcurrent Size ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġcurrent Radius Ġ= Ġitem Radius . get ( layer ) Ġ- Ġd Radius ĊĠĠĠĠĠ Ġval Ġcurrent Angle Ġ= Ġif Ġ( layer . is Even ()) Ġitem Even Angles . get ( item Per Layer ) Ġ- Ġd Angle Ġelse Ġitem Odd Angles . get ( item Per Layer ) Ġ- Ġd Angle ĊĊĠĠĠĠĠ Ġlayout Params . width Ġ= Ġcurrent Size . toInt () ĊĠĠĠĠĠ Ġlayout Params . height Ġ= Ġcurrent Size . toInt () ĊĠĠĠĠĠ Ġlayout Params . circle Radius Ġ= Ġcurrent Radius . toInt () ĊĠĠĠĠĠ Ġlayout Params . circle Angle Ġ= Ġcurrent Angle . toFloat () ĊĠĠĠĠĠ Ġit . layout Params Ġ= Ġlayout Params ĊĊĠĠĠĠĠ Ġif Ġ( layer Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . alpha Ġ= Ġ(( 1 0 0 f Ġ- Ġdistance Percentage . toFloat ()) Ġ/ Ġ 1 0 0 f ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( layer Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . alpha Ġ= Ġdistance Percentage . toFloat () Ġ/ Ġ 1 0 0 f ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( layout Params . width Ġ> Ġitem Sizes . get ( layer - 1 )) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ"[ BLOCK ING ĠTHE ĠF U CK ĠOUT ĠOF ĠIT ] Ġlayout Params . width Ġ" Ġ+ Ġlayout Params . width Ġ+ Ġ" Ġitem Sizes . get ( layer - 1 ) Ġ" Ġ+ Ġitem Sizes . get ( layer - 1 ) Ġ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġitem Per Layer ++ ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠTODO Ġwhen Ġmoving Ġbackwards Ġ-> Ġlayer Ġ 4 Ġdoesn 't Ġmove ĊĠ Ġoverride Ġfun Ġmove Back wards ( movement Percentage : ĠInt ) Ġ{ ĊĠĠĠ ĠLog . d ( java Class . simple Name , Ġ"[ Moving Ġbackwards ] Ġ$ movement Percentage ") ĊĠĠĠ Ġvar Ġdistance Percentage Ġ= Ġmovement Percentage ĊĠĠĠ Ġif Ġ( movement Percentage Ġ> Ġ 1 0 0 ) Ġdistance Percentage Ġ= Ġ 1 0 0 ĊĊĠĠĠ Ġvar Ġlayer : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġitem Per Layer : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġitem Views . forEach Ġ{ ĊĠĠĠĠĠ Ġif Ġ( layer Ġ>= Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġlayout Params : ĠConstraint Layout . LayoutParams Ġ= Ġit . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĊĠĠĠĠĠ Ġif Ġ( item Per Layer Ġ>= ĠITE MS _ PER _ LAYER ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlayer ++ ĊĠĠĠĠĠĠĠ Ġitem Per Layer Ġ= Ġ 0 ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġtotal Size Ġ= Ġitem Sizes . get ( layer ) Ġ- Ġitem Sizes . get ( layer Ġ+ Ġ 1 ) ĊĠĠĠĠĠ Ġval Ġtotal Radius Ġ= Ġitem Radius . get ( layer Ġ+ Ġ 1 ) Ġ- Ġitem Radius . get ( layer ) ĊĠĠĠĠĠ Ġval Ġtotal Even Angle Ġ= Ġ( item Even Angles . get ( Ġ( item Per Layer + 1 ). module ( 6 ) Ġ) Ġ- Ġitem Odd Angles . get ( item Per Layer )). module ( 3 6 0 ) ĊĠĠĠĠĠ Ġval Ġtotal Odd Angle Ġ= Ġ( item Odd Angles . get ( Ġ( item Per Layer + 1 ). module ( 6 ) Ġ) Ġ- Ġitem Even Angles . get ( item Per Layer )). module ( 3 6 0 ) ĊĠĠĠĠĠ Ġval Ġtotal Angle Ġ= Ġif Ġ( layer . is Even ()) Ġtotal Even Angle Ġelse Ġtotal Odd Angle ĊĊĠĠĠĠĠ Ġval Ġd Size Ġ= Ġ( distance Percentage Ġ* Ġtotal Size ) Ġ/ Ġ 1 0 0 ĊĠĠĠĠĠ Ġval Ġd Radius Ġ= Ġ( distance Percentage Ġ* Ġtotal Radius ) Ġ/ Ġ 1 0 0 ĊĠĠĠĠĠ Ġval Ġd Angle Ġ= Ġ( distance Percentage Ġ* Ġtotal Angle ) Ġ/ Ġ 1 0 0 ĊĊĠĠĠĠĠ Ġval Ġcurrent Size Ġ= Ġitem Sizes . get ( layer ) Ġ- Ġd Size ĊĠĠĠĠĠ Ġval Ġcurrent Radius Ġ= Ġitem Radius . get ( layer ) Ġ+ Ġd Radius ĊĠĠĠĠĠ Ġval Ġcurrent Angle Ġ= Ġif Ġ( layer . is Even ()) Ġitem Even Angles . get ( item Per Layer ) Ġ+ Ġd Angle Ġelse Ġitem Odd Angles . get ( item Per Layer ) Ġ+ Ġd Angle ĊĊĠĠĠĠĠ Ġlayout Params . width Ġ= Ġcurrent Size . toInt () ĊĠĠĠĠĠ Ġlayout Params . height Ġ= Ġcurrent Size . toInt () ĊĠĠĠĠĠ Ġlayout Params . circle Radius Ġ= Ġcurrent Radius . toInt () ĊĠĠĠĠĠ Ġlayout Params . circle Angle Ġ= Ġcurrent Angle . toFloat () ĊĠĠĠĠĠ Ġit . layout Params Ġ= Ġlayout Params ĊĊĠĠĠĠĠ Ġif Ġ( layer Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . alpha Ġ= Ġdistance Percentage . toFloat () Ġ/ Ġ 1 0 0 f ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( layer Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . alpha Ġ= Ġ(( 1 0 0 f Ġ- Ġdistance Percentage . toFloat ()) Ġ/ Ġ 1 0 0 f ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( layout Params . width Ġ< Ġitem Sizes . get ( layer Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġitem Per Layer ++ ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġrender Center View ( center Item : ĠRad ial Pager Item < T >) Ġ{ ĊĠĠĠ Ġcenter View ?. setImage Resource ( center Item . image Resource !! ) ĊĠ Ġ} ĊĊĠ Ġfun Ġrender Initial Items ( initial Items : ĠArrayList < Rad ial Pager Item < T >>) Ġ{ ĊĠĠĠ Ġvar Ġlayer : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġval Ġlayer Items Ġ= ĠArrayList < Rad ial Pager Item < T >>() ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠITE MS _ VISIBLE Ġ+ ĠITE MS _ PER _ LAYER ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( i < initial Items . size ) Ġlayer Items . add ( initial Items . get ( i )) ĊĠĠĠĠĠ Ġif Ġ( i . module ( ITEMS _ PER _ LAYER ) Ġ== ĠITE MS _ PER _ LAYER Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayer Item Views Ġ= Ġrender Layer ( layer , Ġlayer Items ) ĊĠĠĠĠĠĠĠ Ġlayer Item Views . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġitem Views . add ( it ) ĊĠĠĠĠĠĠĠĠĠ Ġconstraint Layout ?. addView ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlayer ++ ĊĠĠĠĠĠĠĠ Ġlayer Items . clear () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġappend Layer ( layer Items : ĠArrayList < Rad ial Pager Item < T >>) Ġ{ ĊĠĠĠ Ġval Ġlayer Item Views Ġ= Ġrender Layer ( LAYER _ HIDDEN _ OUT ER , Ġlayer Items ) ĊĠĠĠ Ġlayer Item Views . forEach Ġ{ ĊĠĠĠĠĠ Ġitem Views . add ( it ) ĊĠĠĠĠĠ Ġconstraint Layout ?. addView ( it ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġprepend Layer ( layer Items : ĠArrayList < Rad ial Pager Item < T >>) Ġ{ ĊĠĠĠ Ġval Ġlayer Item Views Ġ= Ġrender Layer ( LAYER _ HIDDEN _ INNER , Ġlayer Items ) ĊĠĠĠ Ġfor Ġ( i Ġin Ġlayer Item Views . last Index .. 0 ) Ġ{ ĊĠĠĠĠĠ Ġitem Views . push ( layer Item Views . get ( i )) ĊĠĠĠĠĠ Ġconstraint Layout ?. addView ( layer Item Views . get ( i )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġclear Inner Layer () Ġ{ ĊĠĠĠ Ġif Ġ( item Views . size Ġ< ĠLAY ERS _ TOTAL Ġ* ĠITE MS _ PER _ LAYER ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠITE MS _ PER _ LAYER ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( i < item Views . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview ToRemove Ġ= Ġitem Views . first () ĊĠĠĠĠĠĠĠ Ġconstraint Layout ?. remove View ( view ToRemove ) ĊĠĠĠĠĠĠĠ Ġitem Views . remove ( view ToRemove ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġclear Outer Layer () Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠITE MS _ PER _ LAYER ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( i < item Views . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview ToRemove Ġ= Ġitem Views . last () ĊĠĠĠĠĠĠĠ Ġconstraint Layout ?. remove View ( view ToRemove ) ĊĠĠĠĠĠĠĠ Ġitem Views . remove ( view ToRemove ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġrender Layer ( layer : ĠInt , Ġlayer Items : ĠArrayList < Rad ial Pager Item < T >> ): ĠArrayList < View > Ġ{ ĊĠĠĠ Ġval Ġlayer Item Views Ġ= ĠArrayList < View >() ĊĠĠĠ Ġfor Ġ( currentItem In Layer Ġin Ġ 0 Ġuntil ĠITE MS _ PER _ LAYER ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( currentItem In Layer Ġ< Ġlayer Items . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠitemView Ġ= Ġrender Image less Item ( layer Items . get ( currentItem In Layer ), Ġlayer Items . get ( currentItem In Layer ). text !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayer , Ġcurrent Item In Layer ) Ġ// ĠTODO ĊĠĠĠĠĠĠĠ Ġlayer Item Views . add ( item View ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġrender Ġitem Ġfill er ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġlayer Item Views ĊĠ Ġ} ĊĊĠ Ġfun Ġrender Item ( radial Pager Item : ĠRad ial Pager Item < T >, Ġlayer : ĠInt , Ġitem Per Layer : ĠInt ): ĠView Ġ{ ĊĠĠĠ Ġval Ġitem Ġ= ĠCircle ImageView ( context ) ĊĠĠĠ Ġitem . setImage Resource ( radial Pager Item . image Resource !! ) ĊĠĠĠ Ġval Ġitem Size : ĠFloat Ġ= Ġitem Sizes . get ( layer ) ĊĠĠĠ Ġval Ġlayout Params : ĠConstraint Layout . LayoutParams Ġ= ĠConstraint Layout . LayoutParams ( item Size . toInt (), Ġitem Size . toInt ()) ĊĠĠĠ Ġlayout Params . circle Constraint Ġ= Ġcenter View !!. id ĊĠĠĠ Ġlayout Params . circle Radius Ġ= Ġitem Radius . get ( layer ). toInt () ĊĠĠĠ Ġlayout Params . circle Angle Ġ= Ġif Ġ( layer . is Even ()) Ġitem Even Angles . get ( item Per Layer ). toFloat () Ġelse Ġitem Odd Angles . get ( item Per Layer ). toFloat () ĊĠĠĠ Ġitem . layout Params Ġ= Ġlayout Params ĊĠĠĠ Ġif Ġ( layer . is Hidden Layer ()) Ġ{ ĊĠĠĠĠĠ Ġitem . alpha Ġ= Ġ 0 f ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// item Views . add ( item ) ĊĠĠĠ Ġ// constraint Layout !!. addView ( item ) ĊĠĠĠ Ġreturn Ġitem ĊĠ Ġ} ĊĊĠ Ġ@ Deprecated (" Remove Ġthis Ġeventually ") ĊĠ Ġfun Ġrender Image less Item ( radial Pager Item : ĠRad ial Pager Item < T >, Ġtext : ĠString , Ġlayer : ĠInt , Ġitem Per Layer : ĠInt ): ĠView Ġ{ ĊĠĠĠ Ġval Ġitem Ġ= ĠTextView ( context ) ĊĠĠĠ Ġitem . text Ġ= Ġtext ĊĠĠĠ Ġitem . setTextColor ( context ?. resources !!. getColor ( android . R . color . white )) ĊĠĠĠ Ġitem . setBackground Resource ( R . drawable . radial _ pager _ item _ text _ background ) ĊĠĠĠ Ġitem . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠ Ġval Ġitem Size : ĠFloat Ġ= Ġitem Sizes . get ( layer ) ĊĠĠĠ Ġval Ġlayout Params : ĠConstraint Layout . LayoutParams Ġ= ĠConstraint Layout . LayoutParams ( item Size . toInt (), Ġitem Size . toInt ()) ĊĠĠĠ Ġlayout Params . circle Constraint Ġ= Ġcenter View !!. id ĊĠĠĠ Ġlayout Params . circle Radius Ġ= Ġitem Radius . get ( layer ). toInt () ĊĠĠĠ Ġlayout Params . circle Angle Ġ= Ġif Ġ( layer . is Even ()) Ġitem Even Angles . get ( item Per Layer ). toFloat () Ġelse Ġitem Odd Angles . get ( item Per Layer ). toFloat () ĊĠĠĠ Ġitem . layout Params Ġ= Ġlayout Params ĊĠĠĠ Ġif Ġ( layer . is Hidden Layer ()) Ġ{ ĊĠĠĠĠĠ Ġitem . alpha Ġ= Ġ 0 f ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// item Views . add ( item ) ĊĠĠĠ Ġ// constraint Layout !!. addView ( item ) ĊĠĠĠ Ġreturn Ġitem ĊĠ Ġ} ĊĊĠ Ġfun ĠInt . is Even (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis Ġ% Ġ 2 Ġ== Ġ 0 ĊĠ Ġ} ĊĊĠ Ġfun ĠInt . module ( mod : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġvar Ġr Ġ= Ġthis . rem ( mod ) ĊĠĠĠ Ġif Ġ( r Ġ< Ġ 0 ) Ġr Ġ+= Ġmod ĊĊĠĠĠ Ġreturn Ġr ĊĠ Ġ} ĊĊĠ Ġfun ĠInt . is Hidden Layer (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis Ġ== Ġ 0 Ġ|| Ġthis Ġ== Ġ 4 ĊĠ Ġ} Ċ }