package Ġcom . example . android . architecture . blueprint s . be et v . modules . ads Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . observe Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcom . example . android . architecture . blueprint s . be et v . R Ċ import Ġcom . example . android . architecture . blueprint s . be et v . common . B ee MediaType Ċ import Ġcom . example . android . architecture . blueprint s . be et v . modules . home . Home Activity Ċ import Ġcom . example . android . architecture . blueprint s . be et v . modules . player . B ee Video Player Activity Ċ import Ġcom . example . android . architecture . blueprint s . be et v . util . Constants Ċ import Ġcom . example . android . architecture . blueprint s . be et v . util . get ViewModel Factory Ċ import Ġcom . example . android . architecture . blueprint s . be et v . widgets . metro . Metro View Border Impl ĊĊĊ Ċ class ĠA ds Activity Ġ: ĠAppCompatActivity (), ĠView Pager . On Page ChangeListener { ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmet ro View Border Impl : ĠMet ro View Border Impl ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Ads ViewModel > Ġ{ Ġget ViewModel Factory () Ġ} ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Pager Ġ: ĠView Pager ĊĊĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠCustom Pager Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpager _ indicator : ĠLinearLayout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdots Count Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠcurrentIndex Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdots : ĠArray < ImageView ?> ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ ads ) ĊĊĠĠĠĠĠĠĠ ĠLog . d (" b amb i ", Ġ" b amb i Ġco i Ġvo Ġman Ġh inh Ġn ay Ġch ua "); ĊĠĠĠĠĠĠĠ Ġmet ro View Border Impl Ġ= ĠMet ro View Border Impl ( this ) ĊĠĠĠĠĠĠĠ Ġview Pager Ġ= ĠfindViewById ( R . id . view pager ) ĊĊĠĠĠĠĠĠĠ Ġpager _ indicator Ġ= ĠfindViewById < View >( R . id . view Pager Count Dot s ) Ġas ĠLinearLayout ĊĊĠĠĠĠĠĠĠ Ġsetup ListAdapter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ListAdapter () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . ads List . observe ( this ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Add Ġdata Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠCustom Pager Adapter ( this , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setAdapter ( m Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setOn Page ChangeListener ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Page View Indicator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon KeyDown ( keyCode : ĠInt , Ġevent : ĠKeyEvent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ DP AD _ LEFT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( Math . max ( currentIndex Ġ- Ġ 1 , Ġ 0 ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( currentIndex Ġ== Ġdots Count Ġ- Ġ 1 ) Ġ{ Ġ// At Ġthe Ġlast Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ ENTER Ġ|| ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ DP AD _ CENTER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ Ads Activity , ĠHome Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ DP AD _ RIGHT Ġ|| ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ ENTER Ġ|| ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ DP AD _ CENTER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( Math . min ( currentIndex Ġ+ Ġ 1 , Ġdots Count ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on KeyDown ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Page View Indicator () Ġ{ ĊĠĠĠĠĠĠĠ Ġdots Count Ġ= Ġm Adapter ?. getCount () !! ĊĠĠĠĠĠĠĠ Ġdots Ġ= ĠarrayOf Null s ( dots Count ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdots Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ i ] Ġ= ĠImageView ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ i ]?. setImage Drawable ( resources . get Drawable ( R . drawable . n onse lect ed item _ dot )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . set Margins ( 4 , Ġ 0 , Ġ 4 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ i ]?. setOn Touch Listener ( object Ġ: ĠView . On Touch Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Touch ( v : ĠView ?, Ġevent : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpager _ indicator !!. addView ( dots [ i ], Ġparams ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdots [ 0 ]?. setImage Drawable ( resources . get Drawable ( R . drawable . selected item _ dot )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdots Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ i ]?. setImage Drawable ( resources . get Drawable ( R . drawable . n onse lect ed item _ dot )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠcurrentIndex Ġ= Ġposition ĊĊĠĠĠĠĠĠĠ Ġdots [ position ]?. setImage Drawable ( resources . get Drawable ( R . drawable . selected item _ dot )) ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} Ċ Ċ }