package Ġjp . k ul una . calendar view pager Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . view pager . widget . Pager Adapter Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġandroid . util . Attribute Set Ċ import Ġjava . util .* Ċ Ċ open Ġclass ĠCalendar ViewPager ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĠView Pager ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġvar Ġon Day ClickListener : Ġ(( Day ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( adapter Ġas ? ĠCalendar Pager Adapter )?. on Day Click Lister Ġ= Ġfield ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġon Day Long ClickListener : Ġ(( Day ) Ġ-> ĠBoolean )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( adapter Ġas ? ĠCalendar Pager Adapter )?. on Day Long ClickListener Ġ= Ġfield ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġon Calendar ChangeListener : Ġ(( Calendar ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġset Adapter ( adapter : ĠP ager Adapter ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setAdapter ( adapter ) ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Ġis ĠCalendar Pager Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . clear On Page Change Listeners () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . on Day Click Lister Ġ= Ġthis . on Day ClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . on Day Long ClickListener Ġ= Ġthis . on Day Long ClickListener ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Item ( Calendar Pager Adapter . MAX _ VALUE Ġ/ Ġ 2 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add On Page ChangeListener ( page ChangeListener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġinitialized Ġchild Ġviews ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsupport Ġwrap _ content ĊĠĠĠĠĠĠĠ Ġval Ġmode Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== ĠMeasure Spec . AT _ MO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġfocused Child Ġ?: Ġget Child At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . measure ( width Measure Spec , ĠMeasure Spec . make Measure Spec ( 0 , ĠMeasure Spec . UNSPECIFIED )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Height Ġ= Ġview . meas ured Height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexactly Height Measure Spec Ġ= ĠMeasure Spec . make Measure Spec ( new Height , ĠMeasure Spec . EX ACT LY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġexactly Height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Calendar (): ĠCalendar ? Ġ= Ġ( adapter Ġas ? ĠCalendar Pager Adapter )?. get Calendar ( currentItem ) ĊĊĠĠĠ Ġfun Ġmove Item By ( position : ĠInt , Ġsmooth Scroll : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Item ( currentItem Ġ+ Ġposition , Ġsmooth Scroll ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpage ChangeListener Ġ= Ġobject Ġ: ĠOn Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= Ġ( adapter Ġas ? ĠCalendar Pager Adapter )?. get Calendar ( position ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Calendar ChangeListener ?. invoke ( calendar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ