package Ġcom . work fort . pst ui an . util . view . image slider . indicator view Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . DataSet Observer Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Parent Ċ import Ġandroidx . core . text . TextUtils Compat Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . view pager . widget . Pager Adapter Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcom . work fort . pst ui an . util . view . image slider . Slider Pager Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . animation . type . Indicator Animation Type Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . animation . type . Scale Animation Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . draw . controller . Draw Controller . ClickListener Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . draw . data . Indicator Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . draw . data . Orientation Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . draw . data . Position Saved State Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . draw . data . R tl Mode Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . utils . Coordinates Utils . get Progress Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . utils . Density Utils . dp To Px Ċ import Ġcom . work fort . pst ui an . util . view . image slider . indicator view . utils . Id Utils Ċ import Ġcom . work fort . pst ui an . util . view . image slider . infinite adapter . Infinite Pager Adapter Ċ Ċ /** Ċ Ġ* Ġ Ġ************************************************************************* *** Ċ Ġ* Ġ Ġ* ĠCreated Ġby Ġ: Ġar han Ġon Ġ 2 7 ĠNov , Ġ 2 0 2 1 Ġat Ġ 9 : 0 5 . Ċ Ġ* Ġ Ġ* ĠEmail Ġ: Ġas h ik . p stu . c se @ gmail . com Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠThis Ġclass Ġis Ġfor : Ċ Ġ* Ġ Ġ* Ġ 1 . Ċ Ġ* Ġ Ġ* Ġ 2 . Ċ Ġ* Ġ Ġ* Ġ 3 . Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠLast Ġedited Ġby Ġ: Ġar han Ġon Ġ 2 0 2 1 / 1 1 / 2 7 . Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠLast ĠReview ed Ġby Ġ: Ġ< Reviewer ĠName > Ġon Ġ< mm / dd / yy > Ċ Ġ* Ġ Ġ************************************************************************* *** Ċ Ġ*/ Ċ Ċ class ĠPage Indicator View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġdef Style Res : ĠInt Ġ= Ġ 0 , Ċ ) Ġ: ĠView ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ), ĠSlider Pager . On Page ChangeListener , ĊĠĠĠ ĠIndicator Manager . Listener , ĠSlider Pager . On Adapter ChangeListener Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmanager : ĠIndicator Manager ĊĠĠĠ Ġprivate Ġvar Ġset Observer : ĠDataSet Observer ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġview Pager : ĠSlider Pager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Interaction Enabled Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Id () ĊĠĠĠĠĠĠĠ Ġinit Indicator Manager ( attrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Id () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠNO _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠId Utils . generate View Id () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Indicator Manager ( attrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager Ġ= ĠIndicator Manager ( this ) ĊĠĠĠĠĠĠĠ Ġmanager . drawer (). init Attributes ( context , Ġattrs ) ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġindicator . padding Left Ġ= Ġpadding Left ĊĠĠĠĠĠĠĠ Ġindicator . padding Top Ġ= Ġpadding Top ĊĠĠĠĠĠĠĠ Ġindicator . padding Right Ġ= Ġpadding Right ĊĠĠĠĠĠĠĠ Ġindicator . padding Bottom Ġ= Ġpadding Bottom ĊĠĠĠĠĠĠĠ Ġis Interaction Enabled Ġ= Ġindicator . interactive Animation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġfind ViewPager ( parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġun Register Set Observer () ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Save InstanceState (): ĠParcel able Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġreturn ĠPosition Saved State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . selected Position , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . select ing Position , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . last Selected Position ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Restore InstanceState ( state : ĠParcel able ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġis ĠPosition Saved State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . indicator (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Position Ġ= Ġstate . selected Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselecting Position Ġ= Ġstate . select ing Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Selected Position Ġ= Ġstate . last Selected Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( state . super State ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( state ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġmanager . drawer (). measure View Size ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( pair . first , Ġpair . second ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . drawer (). draw ( canvas ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . drawer (). touch ( event ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Indicator Updated () Ġ{ ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Page Scroll ( position , Ġposition Offset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Page Select ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠView Pager . SCROLL _ STATE _ IDLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . indicator (). interactive Animation Ġ= Ġis Interaction Enabled ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Adapter Changed ( ĊĠĠĠĠĠĠĠ Ġview Pager : ĠSlider Pager , ĊĠĠĠĠĠĠĠ Ġold Adapter : ĠP ager Adapter ?, ĊĠĠĠĠĠĠĠ Ġnew Adapter : ĠP ager Adapter ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Count ( count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ>= Ġ 0 Ġ&& Ġmanager . indicator (). count Ġ!= Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . indicator (). count Ġ= Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Visibility () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). count ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dynamic Count ( dynamic Count : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). dynamic Count Ġ= Ġdynamic Count ĊĠĠĠĠĠĠĠ Ġif Ġ( dynamic Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Set Observer () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun Register Set Observer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Radius ( radius Dp : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Radius Dp Ġ= Ġradius Dp ĊĠĠĠĠĠĠĠ Ġif Ġ( radius Dp Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Radius Dp Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). radius Ġ= Ġdp To Px ( calculated Radius Dp ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Radius ( radius Px : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Radius Px Ġ= Ġradius Px ĊĠĠĠĠĠĠĠ Ġif Ġ( radius Px Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Radius Px Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). radius Ġ= Ġcalculated Radius Px . toInt () ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Radius (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). radius ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Padding ( padding Dp : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Padding Dp Ġ= Ġpadding Dp ĊĠĠĠĠĠĠĠ Ġif Ġ( padding Dp Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Padding Dp Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpadding Px Ġ= Ġdp To Px ( calculated Padding Dp ) ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). padding Ġ= Ġpadding Px ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Padding ( padding Px : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Padding Px Ġ= Ġpadding Px ĊĠĠĠĠĠĠĠ Ġif Ġ( padding Px Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Padding Px Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). padding Ġ= Ġcalculated Padding Px . toInt () ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Padding (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). padding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Scale Factor ( factor : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Factor Ġ= Ġfactor ĊĠĠĠĠĠĠĠ Ġif Ġ( factor Ġ> ĠScale Animation . MAX _ SCALE _ FACTOR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Factor Ġ= ĠScale Animation . MAX _ SCALE _ FACTOR ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( factor Ġ< ĠScale Animation . MIN _ SCALE _ FACTOR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Factor Ġ= ĠScale Animation . MIN _ SCALE _ FACTOR ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). scale Factor Ġ= Ġcalculated Factor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Scale Factor (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). scale Factor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Stroke Width ( stroke Px : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Stroke Px Ġ= Ġstroke Px ĊĠĠĠĠĠĠĠ Ġval Ġradius Px Ġ= Ġmanager . indicator (). radius ĊĠĠĠĠĠĠĠ Ġif Ġ( stroke Px Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Stroke Px Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( stroke Px Ġ> Ġradius Px ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Stroke Px Ġ= Ġradius Px . toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). stroke Ġ= Ġcalculated Stroke Px . toInt () ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Stroke Width ( stroke Dp : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstroke Px Ġ= Ġdp To Px ( stroke Dp ) ĊĠĠĠĠĠĠĠ Ġval Ġradius Px Ġ= Ġmanager . indicator (). radius ĊĠĠĠĠĠĠĠ Ġif Ġ( stroke Px Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Px Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( stroke Px Ġ> Ġradius Px ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Px Ġ= Ġradius Px ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). stroke Ġ= Ġstroke Px ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Stroke Width (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). stroke ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetSelected Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). selected Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected Color (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). selected Color ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Un selected Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). un selected Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Un selected Color (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). un selected Color ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Auto Visibility ( auto Visibility : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! auto Visibility ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). auto Visibility Ġ= Ġauto Visibility ĊĠĠĠĠĠĠĠ Ġupdate Visibility () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Orientation ( orientation : ĠOrientation ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . indicator (). orientation Ġ= Ġorientation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Animation Duration ( duration : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). animation Duration Ġ= Ġduration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Animation Duration (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). animation Duration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Animation Type ( type : ĠIndicator Animation Type ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . on Value Updated ( null ) ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . indicator (). animation Type Ġ= Ġtype ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . indicator (). animation Type Ġ= ĠIndicator Animation Type . NONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Interactive Animation ( is Interactive : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). interactive Animation Ġ= Ġis Interactive ĊĠĠĠĠĠĠĠ Ġis Interaction Enabled Ġ= Ġis Interactive ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ViewPager ( pager : ĠSlider Pager ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrelease ViewPager () ĊĠĠĠĠĠĠĠ Ġif Ġ( pager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Pager Ġ= Ġpager ĊĠĠĠĠĠĠĠ Ġview Pager ?. add On Page ChangeListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Pager ?. add On Adapter ChangeListener ( this ) ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). view Pager Id Ġ= Ġview Pager !!. id ĊĠĠĠĠĠĠĠ Ġset Dynamic Count ( manager . indicator (). dynamic Count ) ĊĠĠĠĠĠĠĠ Ġupdate State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrelease ViewPager () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager ?. remove On Page ChangeListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset R tl Mode ( mode : ĠR tl Mode ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . rtl Mode Ġ= ĠR tl Mode . Off ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . rtl Mode Ġ= Ġmode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġselected Position Ġ= Ġindicator . selected Position ĊĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= Ġselected Position ĊĠĠĠĠĠĠĠ Ġif Ġ( is R tl ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġindicator . count Ġ- Ġ 1 Ġ- Ġselected Position ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( view Pager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġview Pager !!. getCurrent Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġindicator . last Selected Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġindicator . select ing Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġindicator . selected Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selection (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager . indicator (). selected Position ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Selection ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġposition Ġ= Ġadjust Position ( position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġindicator . selected Position Ġ|| Ġposition Ġ== Ġindicator . select ing Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġindicator . interactive Animation Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġindicator . last Selected Position Ġ= Ġindicator . selected Position ĊĠĠĠĠĠĠĠ Ġindicator . select ing Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġindicator . selected Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġmanager . animate (). basic () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetSelected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġval Ġanimation Type Ġ= Ġindicator . animation Type ĊĠĠĠĠĠĠĠ Ġindicator . animation Type Ġ= ĠIndicator Animation Type . NONE ĊĠĠĠĠĠĠĠ Ġset Selection ( position ) ĊĠĠĠĠĠĠĠ Ġindicator . animation Type Ġ= Ġanimation Type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Selection () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġindicator . interactive Animation Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġindicator . last Selected Position Ġ= ĠIndicator . COUNT _ NONE ĊĠĠĠĠĠĠĠ Ġindicator . select ing Position Ġ= ĠIndicator . COUNT _ NONE ĊĠĠĠĠĠĠĠ Ġindicator . selected Position Ġ= ĠIndicator . COUNT _ NONE ĊĠĠĠĠĠĠĠ Ġmanager . animate (). basic () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Progress ( select ing Position : ĠInt , Ġprogress : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Select ing Position Ġ= Ġselecting Position ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Progress Ġ= Ġprogress ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġif Ġ(! indicator . interactive Animation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġindicator . count ĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ<= Ġ 0 Ġ|| Ġselecting Position Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Select ing Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( select ing Position Ġ> Ġcount Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Select ing Position Ġ= Ġcount Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Progress Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( progress Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Progress Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( calculated Progress Ġ== Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . last Selected Position Ġ= Ġindicator . selected Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . selected Position Ġ= Ġcalculated Select ing Position ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġindicator . select ing Position Ġ= Ġcalculated Select ing Position ĊĠĠĠĠĠĠĠ Ġmanager . animate (). interactive ( calculated Progress ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ClickListener ( listener : ĠClick Listener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . drawer (). set ClickListener ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Set Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( set Observer Ġ!= Ġnull Ġ|| Ġview Pager Ġ== Ġnull Ġ|| Ġview Pager ?. m Adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Observer Ġ= Ġobject Ġ: ĠDataSet Observer () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager ?. m Adapter ?. register DataSet Observer ( set Observer !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġun Register Set Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( set Observer Ġ== Ġnull Ġ|| Ġview Pager Ġ== Ġnull Ġ|| Ġview Pager ?. m Adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager ?. m Adapter ?. unregister DataSet Observer ( set Observer !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Observer Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate State () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager Ġ== Ġnull Ġ|| Ġview Pager ?. m Adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcount : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġposition : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager ?. m Adapter Ġis ĠIn finite Pager Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ( view Pager ?. m Adapter Ġas ĠIn finite Pager Adapter ?) !!. get Real Count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġif Ġ( count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager !!. getCurrent Item () Ġ% Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġview Pager ?. m Adapter !!. count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġview Pager !!. getCurrent Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġselected Pos Ġ= Ġif Ġ( is R tl ()) Ġcount Ġ- Ġ 1 Ġ- Ġposition Ġelse Ġposition ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). selected Position Ġ= Ġselected Pos ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). select ing Position Ġ= Ġselected Pos ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). last Selected Position Ġ= Ġselected Pos ĊĠĠĠĠĠĠĠ Ġmanager . indicator (). count Ġ= Ġcount ĊĠĠĠĠĠĠĠ Ġmanager . animate (). end () ĊĠĠĠĠĠĠĠ Ġupdate Visibility () ĊĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Visibility () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! manager . indicator (). auto Visibility ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġmanager . indicator (). count ĊĠĠĠĠĠĠĠ Ġval Ġvisibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠ Ġif Ġ( visibility Ġ!= ĠVIS IBLE Ġ&& Ġcount Ġ> ĠIndicator . MIN _ COUNT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Visibility ( VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( visibility Ġ!= ĠIN VISIBLE Ġ&& Ġcount Ġ<= ĠIndicator . MIN _ COUNT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Visibility ( IN VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Page Select ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġval Ġcan Select Indicator Ġ= Ġis View Measured () ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġindicator . count ĊĠĠĠĠĠĠĠ Ġif Ġ( can Select Indicator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is R tl ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Position Ġ= Ġcount Ġ- Ġ 1 Ġ- Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Selection ( calculated Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Page Scroll ( position : ĠInt , Ġposition Offset : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġval Ġanimation Type Ġ= Ġindicator . animation Type ĊĠĠĠĠĠĠĠ Ġval Ġinteractive Animation Ġ= Ġindicator . interactive Animation ĊĠĠĠĠĠĠĠ Ġval Ġcan Select Indicator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis View Measured () Ġ&& Ġinteractive Animation Ġ&& Ġanimation Type Ġ!== ĠIndicator Animation Type . NONE ĊĠĠĠĠĠĠĠ Ġif Ġ(! can Select Indicator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġprogress Pair Ġ= Ġget Progress ( indicator , Ġposition , Ġposition Offset , Ġis R tl ()) ĊĠĠĠĠĠĠĠ Ġval Ġselecting Position Ġ= Ġprogress Pair . first ĊĠĠĠĠĠĠĠ Ġval Ġselecting Progress Ġ= Ġprogress Pair . second ĊĠĠĠĠĠĠĠ Ġset Progress ( select ing Position , Ġselecting Progress ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis R tl (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( manager . indicator (). rtl Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR tl Mode . On Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR tl Mode . Off Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR tl Mode . Auto Ġ-> ĠText Utils Compat . get Layout Direction From Locale ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . configuration . locale ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ== ĠView Compat . LAYOUT _ DIRECTION _ RTL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis View Measured (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmeasured Height Ġ!= Ġ 0 Ġ|| Ġmeasured Width Ġ!= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind ViewPager ( view Parent : ĠView Parent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠisValid Parent Ġ= Ġview Parent Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Parent Ġis ĠViewGroup Ġ&& Ġview Parent . child Count Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ(! isValid Parent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġview Pager Id Ġ= Ġmanager . indicator (). view Pager Id ĊĠĠĠĠĠĠĠ Ġval Ġview Pager Ġ= Ġfind ViewPager (( view Parent Ġas ĠViewGroup ), Ġview Pager Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ViewPager ( view Pager ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind ViewPager ( view Parent . parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind ViewPager ( view Group : ĠViewGroup , Ġid : ĠInt ): ĠSlider Pager ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Group . child Count Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġview Group . findViewById < View >( id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( view Ġ!= Ġnull Ġ&& Ġview Ġis ĠSlider Pager ) Ġview Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadjust Position ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalculated Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġmanager . indicator () ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġindicator . count ĊĠĠĠĠĠĠĠ Ġval Ġlast Position Ġ= Ġcount Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( position Ġ> Ġlast Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculated Position Ġ= Ġlast Position ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcalculated Position ĊĠĠĠ Ġ} Ċ }