package Ġcom . mis sn al gas . ph r 2 Ċ Ċ import Ġandroid . app .* Ċ import Ġandroid . content . Context Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . google . android . gms . ads . Mobile Ads Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ import Ġcom . mis sn al gas . ph r 2 . api . Le aves Ċ import Ġcom . mis sn al gas . ph r 2 . view model . Main ViewModel Ċ import Ġcom . mis sn al gas . ph r 2 . view model . ViewModel Factory Ċ import Ġcom . mis sn al gas . ph r 2 . view pager . View Adapter Ċ Ċ class ĠMainActivity Ġ: Ġ ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġ Ġvar ĠCHAN NEL _ ID Ġ: ĠString ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Pager Ġ: ĠView Pager 2 ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel Factory Ġ: ĠViewModel Factory ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġ: ĠMain ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ lazy ĠViewModel Provider ( this , ĠviewModel Factory ). get ( Main ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĊĠĠ Ġprivate Ġval Ġpage Change Callback Ġ: ĠView Pager 2 . On Page Change Callback Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠ Ġobject Ġ: ĠView Pager 2 . On Page Change Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Sc rolled ( position , Ġposition Offset , Ġposition Offset Pixels ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Page ChangeListener ( position + position Offset ) ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel ( context Ġ: ĠContext , Ġchannel _ id Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcontext . getString ( R . string . channel _ notification _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġcontext . getString ( R . string . channel _ notification _ description ) ĊĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= ĠNotification Manager . IMPORT ANCE _ DEFAULT ĊĠĠĠĠĠĠĠ Ġval Ġm Channel Ġ= ĠNotification Channel ( channel _ id , Ġname , Ġimportance ) ĊĠĠĠĠĠĠĠ Ġm Channel . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġget System Service ( NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( m Channel ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe To General Topic () Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Messaging . getInstance (). subscribe To Topic ( Le aves . MAIN _ TOPIC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠCHAN NEL _ ID Ġ= Ġbase Context . getString ( R . string . notification _ channel _ default ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ FULL SCREEN ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġview Pager Ġ= Ġthis . findViewById ( R . id . main _ view pager ) ĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= ĠView Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġview Pager . register On Page Change Callback ( page Change Callback ) ĊĊĠĠĠĠĠĠĠ Ġsubscribe To General Topic () ĊĠĠĠĠĠĠĠ Ġcreate Notification Channel ( this , ĠCHAN NEL _ ID ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Factory Ġ= ĠViewModel Factory ( application Ġ= Ġapplication ) ĊĊĠĠĠĠĠĠĠ Ġload Obs () ĊĊĠĠĠĠĠĠĠ ĠMobile Ads . initialize ( this ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Obs () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvp Ġ= Ġthis . findViewById < ViewPager 2 >( R . id . main _ view pager ) ĊĠĠĠĠĠĠĠ ĠviewModel . backgroundColor LiveData . observe ( this , Ġ{ Ġcolor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ?. let { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp . background Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }