package Ġcom . opens oo q . pl uto Ċ Ċ import Ġandroid . arch . lifecycle . Lifecycle Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . Pager Snap Helper Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . Snap Helper Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . opens oo q . pl uto . base . Pl uto Adapter Ċ import Ġcom . opens oo q . pl uto . listeners . On Slide ChangeListener Ċ import Ġcom . opens oo q . pl uto . listeners . On Snap Position ChangeListener Ċ import Ġcom . opens oo q . pl uto . listeners . Snap On Scroll Listener Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util .* Ċ import Ġkotlin . Experimental . Level Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠO mar ĠAlt am imi Ġon Ġ 2 8 , April , 2 0 1 9 Ċ Ġ*/ Ċ Ċ class ĠPl uto View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= ĠR . attr . Pl uto View Style ) Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style Attr ), ĠView Action Handler Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġrv Slider : ĠRecyclerView ? ĊĠĠĠ Ġprivate Ġvar Ġon Slide ChangeListener : ĠOn Slide ChangeListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġduration : ĠLong Ġ= ĠDEFAULT _ DURATION ĊĠĠĠ Ġprivate Ġvar Ġcurrent Position : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġindicator : ĠPl uto Indicator ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcycle Timer : ĠTimer ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcycle Task : ĠTimer Task ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpl uto Adapter : ĠPl uto Adapter < *, Ġ* >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġres uming Timer : ĠTimer ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġis Cy cl ing : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġauto Recover Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġauto Cycle : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhelper : ĠSnap Helper ĊĠĠĠ Ġprivate Ġvar Ġon Scroll Listener : ĠRecyclerView . On Scroll Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġres uming Task : ĠTimer Task ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġwas Cy cl ing : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġpl uto Life Cycle Observer : ĠPl uto Life Cycle Observer ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġvisibility Ġof Ġthe Ġindicators . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġindicator Visibility : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( visibility ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator ?. setVisibility ( visibility ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm h Ġ= ĠIncoming Handler ( this ) ĊĠĠĠ Ġprivate Ġfun Ġsetup Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġlinear LayoutManager . initial Pref etch ItemCount Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġrv Slider ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġpl uto Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Scroll Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠView . inflate ( getContext (), ĠR . layout . layout _ view _ slider , Ġthis ) ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= Ġcontext . theme . obtain Styled Attributes ( attrs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Pl uto View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Attr , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġrv Slider Ġ= ĠfindViewById ( R . id . rv Slider ) ĊĠĠĠĠĠĠĠ Ġauto Cycle Ġ= Ġattributes . getBoolean ( R . style able . Pl uto View _ auto _ cycle , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġindicator Visibility Ġ= Ġattributes . getBoolean ( R . style able . Pl uto View _ indicator _ visibility , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ) ĊĠĠĠĠĠĠĠ Ġrv Slider ?. add On Item Touch Listener ( object Ġ: ĠRecyclerView . On Item Touch Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Intercept Touch Event ( re cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmotion Event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġmotion Event . action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠMotion Event . ACTION _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecover Cycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Touch Event ( re cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmotion Event : ĠMotion Event ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Request Dis allow Intercept Touch Event ( b : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġattributes . recycle () ĊĠĠĠĠĠĠĠ Ġif Ġ( auto Cycle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Auto Cycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpl uto Life Cycle Observer Ġ= ĠPl uto Life Cycle Observer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Scroll Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġon Scroll Listener Ġ= ĠSnap On Scroll Listener ( helper , Ġobject Ġ: ĠOn Snap Position ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Snap Position Change ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpl uto Adapter ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Slide ChangeListener ?. on Slide Change ( it , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ% Ġit . real Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġcreate ( adapter : ĠPl uto Adapter < *, Ġ* >, Ġduration : ĠLong Ġ= ĠDEFAULT _ DURATION , Ġlifecycle : ĠLifecycle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . pl uto Adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġpl uto Life Cycle Observer . register Action Handler ( this ) ĊĠĠĠĠĠĠĠ Ġpl uto Life Cycle Observer . register Lifecycle ( lifecycle ) ĊĠĠĠĠĠĠĠ Ġsetup Adapter () ĊĠĠĠĠĠĠĠ Ġthis . duration Ġ= Ġduration ĊĠĠĠĠĠĠĠ Ġset Indicator Position ( Indicator Position . CENTER _ BOTTOM ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġenum Ġclass ĠIndicator Position ( val Ġposition : ĠString , Ġval Ġresource Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠC ENTER _ BOTTOM (" CENTER _ BOTTOM ", ĠR . id . default _ center _ bottom _ indicator ), ĊĠĠĠĠĠĠĠ ĠRIGHT _ BOTTOM (" RIGHT _ BOTTOM ", ĠR . id . default _ bottom _ end _ indicator ), ĊĠĠĠĠĠĠĠ ĠLEFT _ BOTTOM (" LEFT _ BOTTOM ", ĠR . id . default _ bottom _ start _ indicator ), ĊĠĠĠĠĠĠĠ ĠC ENTER _ TOP (" CENTER _ TOP ", ĠR . id . default _ center _ top _ indicator ), ĊĠĠĠĠĠĠĠ ĠRIGHT _ TOP (" RIGHT _ TOP ", ĠR . id . default _ center _ top _ end _ indicator ), ĊĠĠĠĠĠĠĠ ĠLEFT _ TOP (" LEFT _ TOP ", ĠR . id . default _ center _ top _ start _ indicator ); ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Indicator Position ( preset Indicator : ĠIndicator Position ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= ĠfindViewById < Pl uto Indicator >( preset Indicator . resourceId ) ĊĠĠĠĠĠĠĠ Ġset Custom Indicator ( indicator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Custom Indicator ( indicator : ĠPl uto Indicator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . indicator ?. destroy Self () ĊĠĠĠĠĠĠĠ Ġthis . indicator Ġ= Ġindicator ĊĠĠĠĠĠĠĠ Ġthis . indicator ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Visibility ( this @ Pl uto View . indicator Visibility ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset RecyclerView ( rv Slider , Ġhelper ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġredraw () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġadd Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġhelper Ġ= ĠP ager Snap Helper () ĊĠĠĠĠĠĠĠ Ġrv Slider ?. on Fl ing Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġhelper . attach To RecyclerView ( rv Slider ) ĊĊĠĠĠĠĠĠĠ Ġon Scroll Listener ?. let Ġ{ Ġrv Slider ?. remove On Scroll Listener ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġinit Scroll Listener () ĊĠĠĠĠĠĠĠ Ġon Scroll Listener ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Slider ?. add On Scroll Listener ( it ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Slide ChangeListener ( on Slide ChangeListener : ĠOn Slide ChangeListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Slide ChangeListener Ġ= Ġon Slide ChangeListener ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget Duration (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġduration ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget Ġthe Ġcurrent Ġitem Ġposition ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetCurrent Position (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pl uto Adapter Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" You Ġdid Ġnot Ġset Ġa Ġslider Ġadapter ") ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Position Ġ% Ġpl uto Adapter ?. real Count !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġset Ġcurrent Ġslider ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġposition ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun ĠsetCurrent Position ( position : ĠInt , Ġsmooth : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpl uto Adapter ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ>= Ġit . real Count Ġ|| Ġposition Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIndex OutOfBoundsException (" try ing Ġto Ġaccess Ġposition " Ġ+ Ġposition Ġ+ Ġ" Ġwhere Ġsize " Ġ+ Ġit . real Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ= Ġit . real Count Ġ* ĠPl uto Adapter . MULTI PLY Ġ+ Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( smooth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv Slider ?. smooth Scroll To Position ( current Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv Slider ?. scrollTo Position ( current Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġdestroy Pl uto () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmove Ġto Ġprev Ġslide . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġmove Prev Position ( smooth : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Position -- ĊĊĠĠĠĠĠĠĠ Ġif Ġ( pl uto Adapter Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy Pl uto () ĊĠĠĠĠĠĠĠ Ġif Ġ( smooth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Slider ?. smooth Scroll To Position ( current Position ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Slider ?. scrollTo Position ( current Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmove Ġto Ġnext Ġslide . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġmove Next Position ( smooth : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ+ Ġ 1 Ġ> Ġpl uto Adapter ?. getItem Count () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġcurrent Position ++ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( pl uto Adapter Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy Pl uto () ĊĠĠĠĠĠĠĠ Ġif Ġ( smooth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Slider ?. smooth Scroll To Position ( current Position ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Slider ?. scrollTo Position ( current Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġstart Ġauto Ġcycle . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdelay ĠĠĠĠĠĠ Ġdelay Ġtime ĊĠĠĠĠ Ġ* Ġ@ param Ġduration ĠĠĠ Ġanimation Ġduration Ġtime . ĊĠĠĠĠ Ġ* Ġ@ param Ġauto Recover Ġif Ġrecover Ġafter Ġuser Ġto uches Ġthe Ġslider . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġstart Auto Cycle ( duration : ĠLong Ġ= Ġthis . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Recover : ĠBoolean Ġ= Ġthis . auto Recover ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcycle Task ?. cancel () ĊĠĠĠĠĠĠĠ Ġm h . remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠ Ġcycle Timer ?. cancel () ĊĠĠĠĠĠĠĠ Ġres uming Timer ?. cancel () ĊĠĠĠĠĠĠĠ Ġres uming Task ?. cancel () ĊĠĠĠĠĠĠĠ Ġthis . duration Ġ= Ġduration ĊĠĠĠĠĠĠĠ Ġcycle Timer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠ Ġthis . auto Recover Ġ= Ġauto Recover ĊĠĠĠĠĠĠĠ Ġcycle Task Ġ= ĠCycle Task ( mh ) ĊĠĠĠĠĠĠĠ Ġcycle Timer ?. schedule ( cycle Task , ĠDEL AY _ TIME , Ġduration ) ĊĠĠĠĠĠĠĠ Ġis Cy cl ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġauto Cycle Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġruntime Ġcall ĊĠĠĠĠ Ġ* Ġpause Ġauto Ġcycle . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpause Auto Cycle () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Cy cl ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcycle Timer ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcycle Task ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm h . remove Callbacks And Messages ( null ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Cy cl ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwas Cy cl ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( res uming Timer Ġ!= Ġnull Ġ&& Ġres uming Task Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecover Cycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwhen Ġpaused Ġcycle , Ġthis Ġmethod Ġcan Ġwake Ġit Ġup . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrecover Cycle () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! auto Recover Ġ|| Ġ! auto Cycle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Cy cl ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( res uming Task Ġ!= Ġnull Ġ&& Ġres uming Timer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres uming Timer ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres uming Task ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres uming Timer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres uming Task Ġ= Ġobject Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Auto Cycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres uming Timer ?. schedule ( res uming Task , ĠDEL AY _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠIllegalStateException ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġset Ġthe Ġduration Ġbetween Ġtwo Ġslider Ġchanges . Ġthe Ġduration Ġvalue Ġmust Ġbigger Ġor Ġequal Ġto Ġ 5 0 0 ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġduration Ġhow Ġlong ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Duration ( duration : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( duration Ġ>= Ġ 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . duration Ġ= Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( auto Cycle Ġ&& Ġis Cy cl ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Auto Cycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġstop Ġthe Ġauto Ġcircle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstop Auto Cycle () Ġ{ ĊĠĠĠĠĠĠĠ Ġcycle Task ?. cancel () ĊĠĠĠĠĠĠĠ Ġm h . remove Callbacks And Messages ( null ) ĊĊĠĠĠĠĠĠĠ Ġcycle Timer ?. cancel () ĊĠĠĠĠĠĠĠ Ġres uming Timer ?. cancel () ĊĠĠĠĠĠĠĠ Ġres uming Task ?. cancel () ĊĠĠĠĠĠĠĠ Ġauto Cycle Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Cy cl ing Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Intercept Touch Event ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġev . action ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpause Auto Cycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdestroy Pl uto () Ġ{ ĊĠĠĠĠĠĠĠ Ġcycle Task ?. cancel () ĊĠĠĠĠĠĠĠ Ġm h . remove Callbacks And Messages ( null ) ĊĊĠĠĠĠĠĠĠ Ġcycle Timer ?. cancel () ĊĠĠĠĠĠĠĠ Ġres uming Timer ?. cancel () ĊĠĠĠĠĠĠĠ Ġres uming Task ?. cancel () ĊĠĠĠĠĠĠĠ Ġm h . remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠ Ġrv Slider ?. adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġindicator ?. destroy Self () ĊĠĠĠĠĠĠĠ Ġon Scroll Listener ?. let Ġ{ Ġrv Slider ?. remove On Scroll Listener ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġon Scroll Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġon Slide ChangeListener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcycle Timer Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcycle Task Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġres uming Task Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġres uming Timer Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġpl uto Life Cycle Observer . unregister () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠIncoming Handler ( pl uto View : ĠPl uto View ) Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Slider Weak Reference : ĠWeak Reference < Pl uto View > Ġ= ĠWeak Reference ( pl uto View ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpl uto View Ġ= Ġm Slider Weak Reference . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpl uto View ?. move Next Position () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Dont Use ĊĠĠĠ Ġoverride Ġfun Ġon Res umed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( was Cy cl ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecover Cycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Dont Use ĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġpause Auto Cycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Dont Use ĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġdestroy Pl uto () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEL AY _ TIME Ġ= Ġ 3 0 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ DURATION Ġ= Ġ 4 0 0 0 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental ( level Ġ= ĠLevel . ERROR ) ĊĠĠĠ Ġprivate Ġannotation Ġclass ĠD ont Use ĊĊĠĠĠ Ġprivate Ġclass ĠCycle Task ( private Ġval Ġincoming Handler : ĠIncoming Handler ?) Ġ: ĠTimer Task () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincoming Handler ?. send Empty Message ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ