package Ġcom . libs . nel son . mar quee view lib Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . LinearLayout Compat Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ Ċ class ĠMar quee View Ġ: ĠViewGroup Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Max Width Ġ= ĠInteger . MAX _ VALUE ĊĠĠĠ Ġprivate Ġval Ġm Max Height Ġ= ĠInteger . MAX _ VALUE ĊĠĠĠ Ġprivate Ġval ĠDIR TY _ TAG Ġ= Ġ" DIR TY " ĊĊĠĠĠ Ġprivate Ġvar Ġm Item Layout Ġ= Ġ- 1 ĊĊĠĠĠ Ġprivate Ġvar Ġm Orientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠ Ġprivate Ġvar Ġm Is Reverse Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġm Animator Runnable : ĠAn imator Runnable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Animation Percent Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Default Animation Duration Ġ= Ġ 1 0 0 0 L ĊĠĠĠ Ġprivate Ġvar Ġm Default Item St ay Duration Ġ= Ġ 1 0 0 0 L ĊĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠMar quee View . Mar quee View Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm Item View Cache Ġ= ĠArrayList < View >() ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġthis ( context , Ġnull ) ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġthis ( context , Ġattrs , Ġ 0 ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext ?. obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĠR . style able . Mar quee View , Ġdef Style Attr , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġa ?. getInt ( R . style able . Mar quee View _ orientation , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġindex ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Orientation ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġanim ator Duration Ġ= Ġa ?. getInt ( R . style able . Mar quee View _ anim ator _ duration , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġstay Duration Ġ= Ġa ?. getInt ( R . style able . Mar quee View _ st ay _ duration , Ġ 1 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġanim ator Duration ?. let Ġ{ Ġm Default Animation Duration Ġ= Ġit . to Long () Ġ} ĊĠĠĠĠĠĠĠ Ġstay Duration ?. let Ġ{ Ġm Default Item St ay Duration Ġ= Ġit . to Long () Ġ} ĊĠĠĠĠĠĠĠ Ġa ?. getBoolean ( R . style able . Mar quee View _ reverse _ anim ator , Ġfalse )?. let Ġ{ Ġm Is Reverse Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġa ?. recycle () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchild Count Ġ= Ġchild Count ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Size Ġ= ĠView . Measure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Size Ġ= ĠView . Measure Spec . getSize ( height Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġval Ġps Ġ= Ġpadding Start ĊĠĠĠĠĠĠĠ Ġval Ġpe Ġ= Ġpadding End ĊĠĠĠĠĠĠĠ Ġval Ġpt Ġ= Ġpadding Top ĊĠĠĠĠĠĠĠ Ġval Ġpb Ġ= Ġpadding Bottom ĊĊĠĠĠĠĠĠĠ Ġvar Ġchild Max Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġchild Max Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġchild : ĠView ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child . visibility Ġ== ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . measure ( View . Measure Spec . make Measure Spec ( width Size Ġ- Ġps Ġ- Ġpe , ĠMeasure Spec . get Mode ( width Measure Spec )), ĠView . Measure Spec . make Measure Spec ( height Size Ġ- Ġpt Ġ- Ġpb , ĠView . Measure Spec . get Mode ( height Measure Spec ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Max Width Ġ= ĠMath . max ( child Max Width , Ġchild . meas ured Width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Max Height Ġ= ĠMath . max ( child Max Height , Ġchild . meas ured Height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġresolve Adjust ed Size ( child Max Width Ġ+ Ġps Ġ+ Ġpe , Ġm Max Width , Ġwidth Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġresolve Adjust ed Size ( child Max Height Ġ+ Ġpt Ġ+ Ġpb , Ġm Max Height , Ġheight Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfinal Width Spec Ġ= ĠView . Measure Spec . make Measure Spec ( width , ĠView . Measure Spec . get Mode ( width Measure Spec )) ĊĠĠĠĠĠĠĠ Ġval Ġfinal Height Spec Ġ= ĠView . Measure Spec . make Measure Spec ( height , ĠView . Measure Spec . get Mode ( height Measure Spec )) ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( final Width Spec , Ġfinal Height Spec ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve Adjust ed Size ( desired Size : ĠInt , ĠmaxSize : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeasure Spec : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġdesired Size ĊĠĠĠĠĠĠĠ Ġval Ġspec Mode Ġ= ĠView . Measure Spec . get Mode ( measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġspec Size Ġ= ĠView . Measure Spec . getSize ( measure Spec ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( spec Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . UNSPECIFIED Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠParent Ġsays Ġwe Ġcan Ġbe Ġas Ġbig Ġas Ġwe Ġwant . ĠJust Ġdon 't Ġbe Ġlarger ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthan Ġmax Ġsize Ġimp osed Ġon Ġourselves . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠMath . min ( desired Size , ĠmaxSize ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . AT _ MO ST Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠParent Ġsays Ġwe Ġcan Ġbe Ġas Ġbig Ġas Ġwe Ġwant , Ġup Ġto Ġspec Size . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġbe Ġlarger Ġthan Ġspec Size , Ġand Ġdon 't Ġbe Ġlarger Ġthan ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġmax Ġsize Ġimp osed Ġon Ġourselves . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠMath . min ( Math . min ( desired Size , Ġspec Size ), ĠmaxSize ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . EX ACT LY Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo Ġchoice . ĠDo Ġwhat Ġwe Ġare Ġtold . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġspec Size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġl : ĠInt , Ġt : ĠInt , Ġr : ĠInt , Ġb : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( child Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( child Count Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . layout ( padding Left , Ġpadding Top , Ġpadding Left Ġ+ Ġchild . meas ured Width , Ġpadding Top Ġ+ Ġchild . meas ured Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġchild 0 Ġ= Ġget Child At ( 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġchild 1 Ġ= Ġget Child At ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Is Reverse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild 1 Ġ= Ġget Child At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild 0 Ġ= Ġget Child At ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Orientation Ġ== ĠLinearLayout . VERTICAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild 0 . layout ( padding Left , Ġpadding Top Ġ- Ġ( child 0 . meas ured Height Ġ* Ġm Animation Percent ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġpadding Left Ġ+ Ġchild 0 . meas ured Width , Ġpadding Top Ġ+ Ġchild 0 . meas ured Height Ġ- Ġ( child 0 . meas ured Height Ġ* Ġm Animation Percent ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild 1 . layout ( padding Left , Ġpadding Top Ġ+ Ġchild 0 . meas ured Height Ġ- Ġ( child 1 . meas ured Height Ġ* Ġm Animation Percent ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Left Ġ+ Ġchild 1 . meas ured Width , Ġpadding Top Ġ+ Ġchild 0 . meas ured Height Ġ+ Ġchild 1 . meas ured Height Ġ- Ġ( child 1 . meas ured Height Ġ* Ġm Animation Percent ). toInt ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild 0 . layout ( padding Left Ġ- Ġ( child 0 . meas ured Width Ġ* Ġm Animation Percent ). toInt (), Ġpadding Top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Left Ġ+ Ġchild 0 . meas ured Width Ġ- Ġ( child 0 . meas ured Width Ġ* Ġm Animation Percent ). toInt (), Ġpadding Top Ġ+ Ġchild 0 . meas ured Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild 1 . layout ( padding Left Ġ+ Ġchild 0 . meas ured Width Ġ- Ġ( child 0 . meas ured Width Ġ* Ġm Animation Percent ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Top , Ġpadding Left Ġ+ Ġchild 0 . meas ured Width Ġ+ Ġchild 1 . meas ured Width Ġ- Ġ( child 1 . meas ured Width Ġ* Ġm Animation Percent ). toInt (), Ġpadding Top Ġ+ Ġchild 1 . meas ured Height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Orientation (@ LinearLayout Compat . Orientation Mode Ġorientation : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Orientation Ġ!= Ġorientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Orientation Ġ= Ġorientation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠAn imator Runnable Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalue Animator Ġ= ĠValue Animator . of Float ( 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Position Ġ= Ġ 0 ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . duration Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . add Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnormal Percent Ġ= Ġanimation . animated Value . toString (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Animation Percent Ġ= Ġif Ġ( m Is Reverse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ- Ġnormal Percent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal Percent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove View At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ>= Ġit . getItem Count ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . start () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . start Delay Ġ= Ġm Default Item St ay Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . duration Ġ= Ġm Default Animation Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . tag Ġ== ĠDIR TY _ TAG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove View ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ< Ġit . getItem Count ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( getItem View ( it . getItem Layout (), Ġcurrent Position )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! value Animator . is Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Callbacks ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Animator . is Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . removeAll Listeners () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Animator . removeAll Update Listeners () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Child At ( i ). tag Ġ= ĠDIR TY _ TAG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Animator Runnable ?. stop () ĊĠĠĠĠĠĠĠ Ġm Animation Percent Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġm Animator Runnable Ġ= ĠAn imator Runnable () ĊĠĠĠĠĠĠĠ Ġm Item View Cache . clear () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠ Ġpost ( m Animator Runnable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġm Animator Runnable ?. stop () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetItem View ( layout : ĠInt , Ġposition : ĠInt ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( layout Ġ!= Ġm Item Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Item View Cache . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove All Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Item Layout Ġ= Ġlayout ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġfinal Item : ĠView ? Ġ= Ġm Item View Cache . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . parent Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfinal Item Ġ?: Ġlet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( context ). inflate ( layout , Ġthis , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Item View Cache . add ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Item Ġ= ĠitemView ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Adapter ?. on Bind Item View ( final Item !! , Ġposition ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfinal Item !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Adapter ( adapter : ĠMar quee View Adapter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġabstract Ġclass ĠMar quee View Adapter Ġ{ ĊĊĠĠĠĠĠĠĠ Ġabstract Ġfun ĠgetItem Layout (): ĠInt ĊĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġon Bind Item View ( item View : ĠView , Ġposition : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġabstract Ġfun ĠgetItem Count (): ĠInt ĊĊĠĠĠ Ġ} Ċ }