package Ġcom . god a . em en joy . presentation . main . home Ċ Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Media Controller Ċ import Ġandroid . widget . Table Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcom . god a . em en joy . R Ċ import Ġcom . god a . em en joy . model . data _ model . Ad Ċ import Ġcom . god a . em en joy . model . data _ model . Slider Ċ import Ġcom . god a . em en joy . model . data _ model . Video Ċ import Ġcom . god a . em en joy . presentation . common . is Online Ċ import Ġcom . god a . em en joy . presentation . common . load Image Ċ import Ġcom . god a . em en joy . presentation . common . showMessage Ċ import Ġcom . god a . em en joy . presentation . main . home . C ess Results Fragment . Companion . newInstance Ċ import Ġcom . god a . em en joy . presentation . widgets . pag inated RecyclerView . Pagination Scroll Listener Ċ import Ġkotlinx . android . synt hetic . main . home _ fragment .* Ċ import Ġkotlinx . android . synt hetic . main . home _ fragment . view .* ĊĊ Ċ val ĠHome Fragment _ FRAGMENT _ TAG Ġ= ĠHome Fragment :: class . java . name ĊĊ Ċ fun Ġnew Home Fragment () Ġ= ĠHome Fragment () Ċ Ċ class ĠHome Fragment Ġ: ĠFragment (), ĠVideo Callback Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠCharacter List ViewModel ĊĊĠĠĠ Ġprivate Ġval Ġcharacter ListAdapter Ġby Ġlazy Ġ{ ĠCharacter List Recycler Adapter ( this ) Ġ} ĊĠĠĠ Ġprivate Ġvar ĠisLoading Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Last Page Ġ= Ġfalse ĊĠĠĠ Ġlateinit Ġvar Ġview 6 : ĠView ĊĠĠĠ Ġlateinit Ġvar Ġmedia Controller : ĠMedia Controller ĊĊĠĠĠ Ġprivate Ġval Ġstate Observer Ġ= ĠObserver < Character List State > Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠ Ġstate ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Last Page Ġ= Ġstate . loaded All Items ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDefault State Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter ListAdapter . update Data ( it . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoading State Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPag in ating State Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError State Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter ListAdapter . remove Loading View Footer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message (( it Ġas ĠError State ). error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġad Observer Ġ= ĠObserver < Ad > Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġad Image . load Image ( ad Image , Ġit . image ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsl iders Observer Ġ= ĠObserver < List < Slider >> Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup ViewPager ( it ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġvideo D At ab ases Observer Ġ= ĠObserver < List < Video >> Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter ListAdapter . update Data ( it ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ViewPager ( it : ĠList < Slider >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠView Pager Adapter ( child FragmentManager ) ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġ// this Ġcan Ġbe Ġany Ġcontainer Ġtable layout Ġor Ġany Ġview group ĊĠĠĠĠĠĠĠ Ġval Ġtab Params Ġ= ĠTable Layout . LayoutParams ( Table Layout . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable Layout . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġval Ġtable Layout Ġ= ĠTable Layout ( activity ) ĊĠĠĠĠĠĠĠ Ġtable Layout . layout Params Ġ= Ġtab Params ĊĠĠĠĠĠĠ Ġ// Ġlin . removeAll Views () ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġit . iterator ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// adapter . add Fragment ( new C ess Results Fragment (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . video ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġcount ++ ), Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvar Ġrow View Ġ= ĠView ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// row View Ġ= ĠView . inflate ( activity , R . layout . circle , view 6 . lin ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Indic at ior ( it . size , 0 ) ĊĊĠĠĠĠĠĠĠ Ġview pager . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġview pager . clip Children Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġview pager . clip To Padding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġmargin Ġ= Ġ 3 2 ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġ 4 0 ĊĠĠĠĠĠĠĠ Ġview pager . page Margin Ġ= Ġmargin ĊĠĠĠĠĠĠĠ Ġview pager . set Padding ( padding Ġ* Ġ 2 , Ġ 0 , Ġpadding Ġ* Ġ 2 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġview pager . add On Page ChangeListener ( object Ġ: ĠView Pager . 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 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Indic at ior ( it . size , view pager . currentItem ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġview pager . set Page Transformer ( false , ĠView Pager . Page Transformer () Ġ{ Ġpage , Ġposition Ġ-> ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( view pager . currentItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . translation X Ġ= Ġ(- padding ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . count Ġ- Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . translation X Ġ= Ġpadding . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . translation X Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġval ĠMIN _ SCALE Ġ= Ġ 0 . 6 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠMIN _ ALPHA Ġ= Ġ 0 . 3 f ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġ- 1 ) Ġ{ Ġ// Ġ[- Infinity ,- 1 ) Ċ Ġ// ĠThis Ġpage Ġis Ġway Ġoff - screen Ġto Ġthe Ġleft . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . alpha Ġ= Ġ. 3 f ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( position Ġ<= Ġ 1 ) Ġ{ Ġ// Ġ[- 1 , 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . scale X Ġ= ĠMath . max ( MIN _ SCALE , Ġ 1 Ġ- ĠMath . abs ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . scale Y Ġ= ĠMath . max ( MIN _ SCALE , Ġ 1 Ġ- ĠMath . abs ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . alpha Ġ= ĠMath . max ( MIN _ ALPHA , Ġ 1 Ġ- ĠMath . abs ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġ( 1 , + Infinity ] Ċ Ġ// ĠThis Ġpage Ġis Ġway Ġoff - screen Ġto Ġthe Ġright . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . alpha Ġ= Ġ. 3 f ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠ Ġ} /* Zoom Out Transformation () */) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Indic at ior ( count : ĠInt , Ġposit on : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlin . removeAll Views () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView : ĠImageView Ġ= ĠImageView ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreating Ġa ĠLinearLayout . LayoutParams Ġobject Ġfor Ġtext Ġview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġparams : ĠViewGroup . LayoutParams Ġ= ĠViewGroup . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 , Ġ// ĠThis Ġwill Ġdefine Ġtext Ġview Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 // ĠThis Ġwill Ġdefine Ġtext Ġview Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġposit on ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Drawable ( resources . get Drawable ( R . drawable . se lec )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠimageView . setImage Drawable ( resources . get Drawable ( R . drawable . sel not )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlin . addView ( imageView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ). get ( Character List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġobserve ViewModel () ĊĠĠĠĠĠĠĠ ĠsavedInstanceState ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . restore Crypto List () ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠviewModel . update Crypto List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsearch Config Click List ner ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Ġview . search img . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* //* Ġ Ġsearch img . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRel after Search . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Tv . visibility Ġ= ĠView . VISIBLE * //* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( Character List Fragment Directions . action Characters To Search ()) ĊĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! context !!. is Online ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get videos Data LiveData () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . videos Data LiveData . observe ( this , Ġvideo D At ab ases Observer ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . state LiveData . observe ( this , Ġstate Observer ) ĊĠĠĠĠĠĠĠ ĠviewModel . ad LiveData . observe ( this , Ġad Observer ) ĊĠĠĠĠĠĠĠ ĠviewModel . slider LiveData . observe ( this , Ġsl iders Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . home _ fragment , Ġcontainer , Ġfalse ) ĊĊĊĊĠĠĠĠĠĠĠ Ġsearch Config Click List ner ( view ) ĊĠĠĠĠĠĠĠ Ġinitialize RecyclerView ( view ) ĊĠĠĠĠĠĠĠ Ġinitialize Swipe To Refresh View ( view ) ĊĠĠĠĠĠĠĠ Ġthis . view 6 Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinitialize RecyclerView ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġview . re cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġcharacter ListAdapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Scroll Listener ( On Scroll Listener ( linear LayoutManager )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Swipe To Refresh View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . swipe Refresh Layout . setOn Refresh Listener Ġ{ ĠviewModel . reset Crypto List () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Next Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġcharacter ListAdapter . add Loading View Footer () ĊĠĠĠĠĠĠĠ ĠviewModel . update Crypto List () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinner Ġclass ĠOn Scroll Listener ( layout Manager : ĠLinearLayoutManager ) Ġ: ĠPagination Scroll Listener ( layout Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisLoading () Ġ= ĠisLoading ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload More Items () Ġ= Ġload Next Page () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetTotal Page Count () Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Last Page () Ġ= Ġis Last Page ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlike Clicked ( v : ĠVideo ) Ġ{ ĊĠĠĠĠĠĠ ĠviewModel . set update Video In Database ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġview Done ( v : ĠVideo ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . set update Video In Database ( v ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvideo Clicked ( v : ĠVideo ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvideo view . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠ Ġclose Image . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠ Ġvideo view . set Video Path ( v . video ) ĊĠĠĠĠĠĠĠ Ġvideo view . start () ĊĠĠĠĠĠĠĠ Ġmedia Controller Ġ= ĠMedia Controller ( context ) ĊĠĠĠĠĠĠĠ Ġmedia Controller . set Anchor View ( video view ) ĊĠĠĠĠĠĠĠ Ġvideo view . set Media Controller ( media Controller ) ĊĊĠĠĠĠĠĠĠ Ġvideo view . setOn Prepared Listener ( MediaPlayer . On Prepared Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// progressbar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġclose Image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo view . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Image . visibility = View . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvideo view . setOn Completion Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo view . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Image . visibility = View . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }