package Ġcom . sup . dev . android . views . views . pager Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . view pager . widget . Pager Adapter Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġcom . sup . dev . android . R Ċ import Ġcom . sup . dev . android . app . Sup Android Ċ import Ġcom . sup . dev . android . tools . Tools View Ċ import Ġjava . lang . RuntimeException Ċ Ċ open Ġclass ĠView Pager Indicator Views Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĠView Pager Indicator ( context , Ġattrs ), ĠView Pager . On Page ChangeListener Ġ{ ĊĊĠĠĠ Ġvar Ġviews Provider :( Int )-> View Ġ= Ġ{ throw ĠRuntimeException (" You Ġmust Ġset Ġprovider ")} ĊĠĠĠ Ġvar Ġoffset Left Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġviews : ĠArray < View > Ġ= Ġempty Array () ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ ĠSup Android . init Edit Mode ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . ViewPager Indicator Views , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġoffset Left Ġ= Ġa . get Dimension ( R . style able . ViewPager Indicator Views _ ViewPager Indicator Views _ offset _ left , Ġoffset Left . toFloat ()). toInt () ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġoverride Ġfun ĠonChanged () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Adapter Changed ( view Pager : ĠView Pager , Ġold Adapter : ĠP ager Adapter ?, Ġnew Adapter : ĠP ager Adapter ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Pager View ( pager : ĠView Pager ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Pager View ( pager ) ĊĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset (){ ĊĠĠĠĠĠĠĠ Ġremove All Views () ĊĠĠĠĠĠĠĠ Ġif Ġ( pager ?. adapter Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġviews Ġ= ĠArray ( pager !!. adapter !!. count ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġinstance View ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . setOnClickListener Ġ{ Ġ_ Ġ-> Ġpager !!. currentItem Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġinstance View ( index : Int ) Ġ= Ġviews Provider . invoke ( index ) ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠLayout ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pager Ġ== Ġnull Ġ&& Ġpager Id Ġ!= Ġ 0 ) Ġset Pager View ( Tools View . find View On Parents ( this , Ġpager Id )) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeasure Child ( v , Ġwidth Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , ĠMeasure Spec . make Measure Spec ( Tools View . dp To Px ( 4 8 ). toInt (), ĠMeasure Spec . EX ACT LY )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġoverride Ġfun Ġon Layout ( b : ĠBoolean , Ġi : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt , Ġi 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( b , Ġi , Ġi 1 , Ġi 2 , Ġi 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġchild Count ĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġvar Ġx Offset Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġ 0 Ġuntil Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( n ) Ġ?: Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset Ġ+= Ġ( child . meas ured Width Ġ+ Ġoffset ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġselected Ġ= Ġviews [ position ] ĊĠĠĠĠĠĠĠ Ġval Ġold Index Ġ= Ġif Ġ( position Offset Ġ> Ġ 0 ) Ġposition Ġ+ Ġ 1 Ġelse Ġposition Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( position Offset Ġ!= Ġ 0 f Ġ&& Ġold Index Ġ> Ġ- 1 Ġ&& Ġold Index Ġ< Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġviews [ old Index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset Ġ+= Ġ((( selected . meas ured Width Ġ+ Ġold . meas ured Width ) Ġ/ Ġ 2 Ġ+ Ġoffset ) Ġ* Ġposition Offset ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ( width Ġ- Ġoffset Left Ġ- Ġselected . meas ured Width ) Ġ/ Ġ 2 Ġ- Ġx Offset ĊĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( n ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġ( height Ġ- Ġchild . meas ured Height ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . layout ( x , Ġy , Ġx Ġ+ Ġchild . meas ured Width , Ġchild . meas ured Height Ġ+ Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ( offset Ġ+ Ġchild . meas ured Width ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ }