/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 1 ĠPat rik ĠA ker fel dt Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 1 ĠJ ake ĠWh art on Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġgoes on . circle view pager indicator . view Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġandroidx . view pager . widget . ViewPager . On Page ChangeListener Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Configuration Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġgoes on . circle view pager indicator . R Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . min Ċ Ċ class ĠCircle ViewPager Indicator ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet Ċ ) Ġ: ĠView ( context , Ġattrs ), ĠPage Indicator Ġ{ ĊĊĠĠĠ Ġ// ĠDraw ĊĠĠĠ Ġprivate Ġval Ġpaint Page Fill Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġval Ġpaint Stroke Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġval Ġpaint Fill Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġval Ġrect Fill Ġ= ĠRect F () ĊĊĠĠĠ Ġ// ĠP ager ĊĠĠĠ Ġprivate Ġvar Ġview Pager : ĠView Pager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn Page ChangeListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠcurrentPage Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġprev Page Ġ= Ġ- 1 ĊĊĠĠĠ Ġ// ĠTouch ĊĠĠĠ Ġprivate Ġval Ġtouch S lop : ĠInt Ġ= ĠView Configuration . get ( context ). scaled Touch S lop ĊĠĠĠ Ġprivate Ġvar Ġlast Motion X Ġ= Ġ- 1 f ĊĠĠĠ Ġprivate Ġvar Ġactive Pointer Id Ġ= ĠINVALID _ POINTER ĊĠĠĠ Ġprivate Ġvar Ġis Dragging Ġ= Ġfalse ĊĊĠĠĠ Ġ// Ġanimation ĊĠĠĠ Ġprivate Ġvar Ġanim ator : ĠObject Animator ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġanim Progress : ĠFloat Ġ= Ġ 1 f ĊĊĠĠĠ Ġ// ĠAttr s ĊĠĠĠ Ġprivate Ġvar Ġm Snap : ĠBoolean ĊĠĠĠ Ġprivate Ġvar Ġm Center ed : ĠBoolean ĊĠĠĠ Ġprivate Ġvar Ġm Fill Extend Width : ĠFloat ĊĠĠĠ Ġprivate Ġvar Ġm Radius : ĠFloat ĊĠĠĠ Ġprivate Ġvar Ġm Page Space : ĠFloat ĊĊĠĠĠ Ġvar Ġpage Color : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpaint Page Fill . color ĊĠĠĠĠĠĠĠ Ġset ( page Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Page Fill . color Ġ= Ġpage Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġfill Color : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpaint Fill . color ĊĠĠĠĠĠĠĠ Ġset ( fill Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Fill . color Ġ= Ġfill Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġstroke Color : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpaint Stroke . color ĊĠĠĠĠĠĠĠ Ġset ( stroke Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Stroke . color Ġ= Ġstroke Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar ĠstrokeWidth : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpaint Stroke . stroke Width ĊĠĠĠĠĠĠĠ Ġset ( stroke Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Stroke . stroke Width Ġ= ĠstrokeWidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġradius : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Radius ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Radius Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġpage Space : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Page Space ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Page Space Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis Snap : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Snap ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Snap Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis Center ed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Center ed ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Center ed Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġview Pager Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġview Pager !!. adapter !!. count ĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( currentPage Ġ>= Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Item ( count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtwo Radius With Page Space Ġ= Ġ( m Radius Ġ* Ġ 2 ) Ġ+ Ġm Page Space ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Offset Ġ= Ġif Ġ( m Center ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( padding Left Ġ+ Ġm Radius ) Ġ+ Ġ( width Ġ- Ġpadding Left Ġ- Ġpadding Right ) Ġ* Ġ 0 . 5 f Ġ- Ġ( count Ġ* Ġtwo Radius With Page Space ) Ġ* Ġ 0 . 5 f Ġ- Ġ( m Fill Extend Width ) Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( padding Left Ġ+ Ġm Radius ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtop Offset Ġ= Ġpadding Top Ġ+ Ġm Radius ĊĊĠĠĠĠĠĠĠ Ġval Ġpage Fill Radius Ġ= Ġif Ġ( paint Stroke . stroke Width Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Radius Ġ- Ġpaint Stroke . stroke Width Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Radius ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpage Move Direction Ġ= Ġif Ġ( currentPage Ġ> Ġprev Page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Loop Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc X Ġ= Ġleft Offset Ġ+ Ġ( i Loop Ġ* Ġtwo Radius With Page Space ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Loop Ġ== ĠcurrentPage ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset X Ġ= Ġif Ġ( m Snap ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fill Extend Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fill Extend Width Ġ* Ġanim Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Fill . set ( c X Ġ- Ġm Radius , Ġtop Offset Ġ- Ġm Radius , Ġc X Ġ+ Ġm Radius , Ġtop Offset Ġ+ Ġm Radius ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Move Direction Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Fill . right Ġ+= Ġoffset X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Fill . left Ġ+= Ġ( m Fill Extend Width Ġ- Ġoffset X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Fill . right Ġ+= Ġm Fill Extend Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( paint Fill . alpha Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( rect Fill , Ġm Radius , Ġm Radius , Ġpaint Fill ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Fill Radius Ġ!= Ġm Radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( rect Fill , Ġm Radius , Ġm Radius , Ġpaint Stroke ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( i Loop Ġ== Ġprev Page ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd X Ġ= Ġif Ġ( i Loop Ġ<= ĠcurrentPage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc X Ġ+ Ġm Fill Extend Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset X Ġ= Ġif Ġ( m Snap ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fill Extend Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fill Extend Width Ġ* Ġanim Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Fill . set ( dX Ġ- Ġm Radius , Ġtop Offset Ġ- Ġm Radius , Ġd X Ġ+ Ġm Radius , Ġtop Offset Ġ+ Ġm Radius ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Move Direction Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Fill . right Ġ+= Ġ( m Fill Extend Width Ġ- Ġoffset X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Fill . left Ġ+= Ġ(- m Fill Extend Width Ġ+ Ġoffset X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( paint Page Fill . alpha Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( rect Fill , Ġm Radius , Ġm Radius , Ġpaint Page Fill ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Fill Radius Ġ!= Ġm Radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( rect Fill , Ġm Radius , Ġm Radius , Ġpaint Stroke ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd X Ġ= Ġif Ġ( m Snap ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Loop Ġ<= ĠcurrentPage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc X Ġ+ Ġm Fill Extend Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Move Direction Ġ> Ġ 0 Ġ&& Ġi Loop Ġin Ġ( prev Page Ġ+ Ġ 1 ) Ġuntil ĠcurrentPage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc X Ġ+ Ġ( m Fill Extend Width Ġ* Ġ( 1 f Ġ- Ġanim Progress )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( page Move Direction Ġ< Ġ 0 Ġ&& Ġi Loop Ġin Ġ( currentPage Ġ+ Ġ 1 ) Ġuntil Ġprev Page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc X Ġ+ Ġ( m Fill Extend Width Ġ* Ġanim Progress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Loop Ġ<= ĠcurrentPage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc X Ġ+ Ġm Fill Extend Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( paint Page Fill . alpha Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( dX , Ġtop Offset , Ġpage Fill Radius , Ġpaint Page Fill ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Fill Radius Ġ!= Ġm Radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( dX , Ġtop Offset , Ġm Radius , Ġpaint Stroke ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( super . on Touch Event ( ev )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager Ġ== Ġnull Ġ|| Ġview Pager !!. adapter !!. count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġaction Ġ= Ġev . action Ġand ĠMotion Event . ACTION _ MASK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Pointer Id Ġ= Ġev . get Pointer Id ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Motion X Ġ= Ġev . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Pointer Index Ġ= Ġev . find Pointer Index ( active Pointer Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġev . getX ( active Pointer Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta X Ġ= Ġx Ġ- Ġlast Motion X ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Dragging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( delta X ) Ġ> Ġtouch S lop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Dragging Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Dragging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Motion X Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Pager !!. is Fake Dragging Ġ|| Ġview Pager !!. begin Fake Drag ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager !!. fake Drag By ( delta X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ CANCEL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Dragging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġview Pager !!. adapter !!. count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Width Ġ= Ġwidth Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsix th Width Ġ= Ġwidth Ġ/ Ġ 6 f ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( currentPage Ġ> Ġ 0 Ġ&& Ġev . x Ġ< Ġhalf Width Ġ- Ġsix th Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ!= ĠMotion Event . ACTION _ CANCEL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager !!. currentItem Ġ= ĠcurrentPage Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( currentPage Ġ< Ġcount Ġ- Ġ 1 Ġ&& Ġev . x Ġ> Ġhalf Width Ġ+ Ġsix th Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ!= ĠMotion Event . ACTION _ CANCEL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager !!. currentItem Ġ= ĠcurrentPage Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Dragging Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Pointer Id Ġ= ĠINVALID _ POINTER ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Pager !!. is Fake Dragging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager !!. end Fake Drag () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ POINTER _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġev . action Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Motion X Ġ= Ġev . getX ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Pointer Id Ġ= Ġev . get Pointer Id ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ POINTER _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer Index Ġ= Ġev . action Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer Id Ġ= Ġev . get Pointer Id ( pointer Index ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pointer Id Ġ== Ġactive Pointer Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Pointer Index Ġ= Ġif Ġ( pointer Index Ġ== Ġ 0 ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Pointer Id Ġ= Ġev . get Pointer Id ( new Pointer Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Motion X Ġ= Ġev . getX ( ev . find Pointer Index ( active Pointer Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset ViewPager ( view : ĠView Pager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager Ġ=== Ġview ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Pager ?. setOn Page ChangeListener ( null ) ĊĊĠĠĠĠĠĠĠ ĠcheckNotNull ( view . adapter ) Ġ{ Ġ" ViewPager Ġdoes Ġnot Ġhave Ġadapter Ġinstance ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Pager Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġview Pager !!. setOn Page ChangeListener ( this ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset ViewPager ( view : ĠView Pager , Ġinitial Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset ViewPager ( view ) ĊĠĠĠĠĠĠĠ ĠsetCurrent Item ( initial Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetCurrent Item ( item : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( view Pager ) Ġ{ Ġ" ViewPager Ġhas Ġnot Ġbeen Ġbound ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Pager !!. currentItem Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= ĠcurrentPage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev Page Ġ= ĠcurrentPage ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify DataSet Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlistener ?. on Page Scroll StateChanged ( state ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlistener ?. on Page Sc rolled ( position , Ġposition Offset , Ġposition Offset Pixels ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprev Page Ġ= ĠcurrentPage ĊĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġposition ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Snap ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Animation () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlistener ?. on Page Selected ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator Ġ= ĠObject Animator . of Float ( this , Ġ" anim Progress ", Ġ 0 f , Ġ 1 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 2 4 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcancel Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator ?. cancel () ĊĠĠĠĠĠĠĠ Ġanim ator Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Anim Progress ( progress : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanim Progress Ġ= Ġprogress ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset On Page ChangeListener ( listener : ĠOn Page ChangeListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġ( non - Javadoc ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġandroid . view . View # on Measure ( int , Ġint ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( measure Long ( width Measure Spec ), Ġmeasure Short ( height Measure Spec )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġthe Ġwidth Ġof Ġthis Ġview ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmeasure Spec ĊĠĠĠĠ Ġ* ĠA Ġmeasure Spec Ġpacked Ġinto Ġan Ġint ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġwidth Ġof Ġthe Ġview , Ġhon oring Ġconstraints Ġfrom Ġmeasure Spec ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmeasure Long ( measure Spec : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġspec Mode Ġ= ĠMeasure Spec . get Mode ( measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġspec Size Ġ= ĠMeasure Spec . getSize ( measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( spec Mode Ġ== ĠMeasure Spec . EX ACT LY Ġ|| Ġview Pager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// We Ġwere Ġtold Ġhow Ġbig Ġto Ġbe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġspec Size ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Calculate Ġthe Ġwidth Ġaccording Ġthe Ġviews Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġview Pager !!. adapter !!. count ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( padding Left Ġ+ Ġpadding Right Ġ+ Ġ( m Radius Ġ* Ġ 2 Ġ* Ġcount ) Ġ+ Ġ( count Ġ- Ġ 1 ) Ġ* Ġm Page Space Ġ+ Ġ 1 Ġ+ Ġm Fill Extend Width ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Res pect ĠAT _ MO ST Ġvalue Ġif Ġthat Ġwas Ġwhat Ġis Ġcalled Ġfor Ġby Ġmeasure Spec ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( spec Mode Ġ== ĠMeasure Spec . AT _ MO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġmin ( result , Ġspec Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġthe Ġheight Ġof Ġthis Ġview ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmeasure Spec ĊĠĠĠĠ Ġ* ĠA Ġmeasure Spec Ġpacked Ġinto Ġan Ġint ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġheight Ġof Ġthe Ġview , Ġhon oring Ġconstraints Ġfrom Ġmeasure Spec ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmeasure Short ( measure Spec : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġspec Mode Ġ= ĠMeasure Spec . get Mode ( measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġspec Size Ġ= ĠMeasure Spec . getSize ( measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( spec Mode Ġ== ĠMeasure Spec . EX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// We Ġwere Ġtold Ġhow Ġbig Ġto Ġbe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġspec Size ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Measure Ġthe Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ( 2 Ġ* Ġm Radius Ġ+ Ġpadding Top Ġ+ Ġpadding Bottom Ġ+ Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Res pect ĠAT _ MO ST Ġvalue Ġif Ġthat Ġwas Ġwhat Ġis Ġcalled Ġfor Ġby Ġmeasure Spec ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( spec Mode Ġ== ĠMeasure Spec . AT _ MO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġmin ( result , Ġspec Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġcancel Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Restore InstanceState ( state : ĠParcel able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsaved State Ġ= Ġstate Ġas ĠSaved State ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( saved State . super State ) ĊĊĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġsaved State . currentPage ĊĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Save InstanceState (): ĠParcel able Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsuper State Ġ= Ġsuper . on Save InstanceState () ĊĠĠĠĠĠĠĠ Ġval Ġsaved State Ġ= ĠSaved State ( super State ) ĊĠĠĠĠĠĠĠ Ġsaved State . currentPage Ġ= ĠcurrentPage ĊĠĠĠĠĠĠĠ Ġreturn Ġsaved State ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠSaved State Ġ: ĠBase Saved State Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠcurrentPage Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġconstructor ( super State : ĠParcel able ?) Ġ: Ġsuper ( super State ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconstructor (` in `: ĠParcel ) Ġ: Ġsuper (` in `) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġ` in `. readInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( dest : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . writeTo Parcel ( dest , Ġflags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest . writeInt ( currentPage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠCRE ATOR : ĠParcel able . Creator < Saved State > Ġ= Ġobject Ġ: ĠParcel able . Creator < Saved State > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel (` in `: ĠParcel ): ĠSaved State Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSaved State (` in `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Saved State ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf Null s ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINVALID _ POINTER Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ PAGE _ FILL _ COLOR Ġ= Ġ"# 0 0 0 0 0 0 0 0 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ST RO KE _ COLOR Ġ= Ġ"# FF DDDD DD " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ FILL _ COLOR Ġ= Ġ"# FFFFFFFF " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ FILL _ EXT END _ WIDTH Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ RADIUS _ DP Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ST RO KE _ DP Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ CENTER ED Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ SNAP Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Retrieve Ġstyles Ġattributes ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Circle ViewPager Indicator ) ĊĊĠĠĠĠĠĠĠ Ġm Radius Ġ= Ġa . get Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Circle ViewPager Indicator _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEFAULT _ RADIUS _ DP Ġ* Ġresources . display Metrics . density ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġm Page Space Ġ= Ġa . get Dimension ( R . style able . Circle ViewPager Indicator _ page Space , Ġm Radius ) ĊĠĠĠĠĠĠĠ Ġm Snap Ġ= Ġa . getBoolean ( R . style able . Circle ViewPager Indicator _ snap , ĠDEFAULT _ SNAP ) ĊĠĠĠĠĠĠĠ Ġm Center ed Ġ= Ġa . getBoolean ( R . style able . Circle ViewPager Indicator _ centered , ĠDEFAULT _ CENTER ED ) ĊĊĠĠĠĠĠĠĠ Ġm Fill Extend Width Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa . get Dimension ( R . style able . Circle ViewPager Indicator _ fill Extend Width , ĠDEFAULT _ FILL _ EXT END _ WIDTH ) ĊĊĠĠĠĠĠĠĠ Ġwith ( paint Page Fill ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġa . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Circle ViewPager Indicator _ page Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . parse Color ( DEFAULT _ PAGE _ FILL _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( paint Stroke ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġa . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Circle ViewPager Indicator _ stroke Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . parse Color ( DEFAULT _ ST RO KE _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġa . get Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Circle ViewPager Indicator _ stroke Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDEFAULT _ ST RO KE _ DP Ġ* Ġcontext . resources . display Metrics . density ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( paint Fill ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġa . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Circle ViewPager Indicator _ fill Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . parse Color ( DEFAULT _ FILL _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA ĠPage Indicator Ġis Ġresponsible Ġto Ġshow Ġan Ġvisual Ġindicator Ġon Ġthe Ġtotal Ġviews Ċ Ġ* Ġnumber Ġand Ġthe Ġcurrent Ġvisible Ġview . Ċ Ġ*/ Ċ interface ĠPage Indicator Ġ: ĠOn Page ChangeListener Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBind Ġthe Ġindicator Ġto Ġa ĠView Pager . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġview ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset ViewPager ( view : ĠView Pager ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBind Ġthe Ġindicator Ġto Ġa ĠView Pager . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġview ĊĠĠĠĠ Ġ* Ġ@ param Ġinitial Position ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset ViewPager ( view : ĠView Pager , Ġinitial Position : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġcurrent Ġpage Ġof Ġboth Ġthe ĠView Pager Ġand Ġindicator . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġ** must ** Ġbe Ġused Ġif Ġyou Ġneed Ġto Ġset Ġthe Ġpage Ġbefore ĊĠĠĠĠ Ġ* Ġthe Ġviews Ġare Ġdrawn Ġon Ġscreen Ġ( e . g ., Ġdefault Ġstart Ġpage ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġitem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsetCurrent Item ( item : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġa Ġpage Ġchange Ġlistener Ġwhich Ġwill Ġreceive Ġforwarded Ġevents . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset On Page ChangeListener ( listener : ĠOn Page ChangeListener ?) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNotify Ġthe Ġindicator Ġthat Ġthe Ġfragment Ġlist Ġhas Ġchanged . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnotify DataSet Changed () Ċ }