/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠDesign ed Ġ& Ġdeveloped Ġby ĠQu ab yn ah ĠC odel abs ( c ). ĠFor Ġthe Ġlove Ġof ĠAndroid Ġdevelopment . Ċ Ġ*/ Ċ Ċ package Ġdev . ug scheduler . ui . on boarding Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . view pager . widget . Pager Adapter Ċ import Ġdev . ug scheduler . R Ċ import Ġdev . ug scheduler . databinding . On boarding Fragment Binding Ċ import Ġdev . ug scheduler . shared . util . Base Activity Ċ Ċ class ĠOn boarding Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠOn boarding Fragment Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠOn boarding ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠOn boarding Fragment Binding . inflate ( in flater ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this ). get ( On boarding ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġview Ġpager ĊĠĠĠĠĠĠĠ Ġbinding . pager . adapter Ġ= ĠOn boarding Pager Adapter ( require Activity ()) ĊĠĠĠĠĠĠĠ Ġbinding . page Indicator . set ViewPager ( binding . pager ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCancel Ġon boarding Ġprocess ĊĠĠĠĠĠĠĠ Ġbinding . get Started . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . perform On boarding Completion ( require Activity () Ġas ĠBase Activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMove Ġto Ġhome Ġpage Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! viewModel . show On boarding ( require Activity () Ġas ĠBase Activity )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ( require Activity () Ġas ĠBase Activity ). intent To ( Home Activity :: class . java , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠOn boarding Pager Adapter ( private Ġval Ġhost : ĠActivity ) Ġ: ĠP ager Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis View From Object ( view : ĠView , Ġ` object `: ĠAny ): ĠBoolean Ġ= Ġ` object ` Ġ== Ġview ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdestroy Item ( container : ĠViewGroup , Ġposition : ĠInt , Ġ` object `: ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . remove View (` object ` Ġas ĠView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinstantiate Item ( container : ĠViewGroup , Ġposition : ĠInt ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġget Page ( position , Ġcontainer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . addView ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġv ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Page ( position : ĠInt , Ġcontainer : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage One Ġ= Ġhost . layout Inflater . inflate ( R . layout . page _ one , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage One ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Two Ġ= Ġhost . layout Inflater . inflate ( R . layout . page _ two , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Two ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ