package Ġdev . va ib hav . qu izz ify . ui . screens . on Board ing Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġdev . va ib hav . qu izz ify . R Ċ import Ġdev . va ib hav . qu izz ify . databinding . Activity On Board ing Binding Ċ import Ġdev . va ib hav . qu izz ify . ui . adapters . On boarding Adapter Ċ import Ġdev . va ib hav . qu izz ify . ui . screens . auth . Auth Activity Ċ import Ġdev . va ib hav . qu izz ify . util . launch And Collect Ċ import Ġdev . va ib hav . qu izz ify . util . launch And Collect Latest Ċ import Ġdev . va ib hav . qu izz ify . util . make StatusBar Transparent Ċ import Ġdev . va ib hav . qu izz ify . util . view Binding Ċ Ċ @ Android EntryPoint Ċ class ĠOn Board ing Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġby Ġview Binding ( Activity On Board ing Binding :: inflate ) ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < On Board ing ViewModel >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Board ing Adapter : ĠOn boarding Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġanimation : ĠAnimation ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġmake StatusBar Transparent () ĊĠĠĠĠĠĠĠ Ġon Board ing Adapter Ġ= ĠOn boarding Adapter ( viewModel . on Board ing List ) ĊĠĠĠĠĠĠĠ Ġanimation Ġ= ĠAnimation Utils . load Animation ( this , ĠR . anim . scale _ from _ center ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠĠĠĠĠ Ġinit Listeners () ĊĠĠĠĠĠĠĠ Ġcollect Ui State () ĊĠĠĠĠĠĠĠ Ġcollect Ui Events () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Listeners () Ġ= Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġskip Button . setOnClickListener Ġ{ ĠviewModel . on SK ip Button Pressed () Ġ} ĊĠĠĠĠĠĠĠ Ġnext Button . setOnClickListener Ġ{ ĠviewModel . onNext Button Pressed () Ġ} ĊĠĠĠĠĠĠĠ Ġview Pager . register On Page Change Callback ( object Ġ: ĠView Pager 2 . On Page Change Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Selected ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Page Changed ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ= Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġview Pager . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis User Input Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġon Board ing Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdots Indicator . dots Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġdots Indicator . set ViewPager 2 ( binding . view Pager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollect Ui State () Ġ= ĠviewModel . ui State . launch And Collect Latest ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġit . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . start Animation ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . text Ġ= Ġit . subtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . start Animation ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Button . isVisible Ġ= Ġit . is Skip Button Visible ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollect Ui Events () Ġ= ĠviewModel . events . launch And Collect ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOn Board ing Screen Events . Navigate To Login Screen Ġ-> Ġnavigate To Login Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOn Board ing Screen Events . Show Next Page Ġ-> Ġshow Next Page ( it . page No ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Next Page ( page No : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . view Pager . setCurrent Item ( page No , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Login Screen () Ġ{ ĊĠĠĠĠĠĠĠ ĠIntent ( this , ĠAuth Activity :: class . java ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ