package Ġcom . v wo om . time lap seg allery . detail Ċ Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . transition . Transition Inflater Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . DataSource Ċ import Ġcom . bump tech . glide . load . engine . G lide Exception Ċ import Ġcom . bump tech . glide . request . RequestListener Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . v wo om . time lap seg allery . R Ċ import Ġcom . v wo om . time lap seg allery . databinding . Fragment Fullscreen Binding Ċ import Ġcom . v wo om . time lap seg allery . di . base . Base Fragment Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . io . File Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ class ĠFull screen Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġargs : ĠFull screen Fragment Args Ġby Ġnav Args () ĊĠĠĠ Ġprivate Ġvar Ġposition Ġby ĠDeleg ates . notNull < Int >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġphotos : ĠArray < String > ĊĠĠĠ Ġprivate Ġvar Ġbinding : ĠFragment Fullscreen Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġimage Is Loaded Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġplay Job : ĠJob ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġplaying : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġphoto Files : ĠList < File > ĊĊĠĠĠ Ġprivate Ġvar Ġplayback Interval Ġby ĠDeleg ates . notNull < Long >() ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġposition Ġ= Ġargs . position ĊĠĠĠĠĠĠĠ Ġphotos Ġ= Ġargs . photo Urls ĊĊĠĠĠĠĠĠĠ Ġval Ġarray List Ġ= Ġarray ListOf < File >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( url Ġin Ġphotos ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray List . add ( File ( url )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġphoto Files Ġ= Ġarray List . toList () ĊĊĠĠĠĠĠĠĠ Ġval Ġpref Ġ= ĠPreference Manager . getDefault SharedPreferences ( require Context ()) ĊĠĠĠĠĠĠĠ Ġval Ġplayback Interval Shared Pref Ġ= Ġpref . getString ( getString ( R . string . key _ playback _ interval ), ĠgetString ( R . string . playback _ interval _ default )) ĊĠĠĠĠĠĠĠ Ġplayback Interval Ġ= Ġplayback Interval Shared Pref ?. to Long () Ġ?: Ġ 5 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġshared Elem Transition Ġ= ĠTransition Inflater . from ( context ). inflate Transition ( R . transition . fullscreen _ shared _ elem _ transition ) ĊĠĠĠĠĠĠĠ Ġshared Element Enter Transition Ġ= Ġshared Elem Transition ĊĠĠĠĠĠĠĠ Ġshared Element Return Transition Ġ= Ġshared Elem Transition ĊĠĠĠĠĠĠĠ Ġpost p one Enter Transition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Fullscreen Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding ?. root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinitialize Fullscreen Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Fullscreen Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġdialog ĊĠĠĠĠĠĠĠ Ġ// ĠInit Ġcolor Ġof Ġplay Ġfab ĊĠĠĠĠĠĠĠ Ġbinding ?. fullscreen Play Fab ?. background Tint List Ġ= ĠColor State List . valueOf ( Context Compat . getColor ( require Context (), ĠR . color . color Green )) ĊĠĠĠĠĠĠĠ Ġbinding ?. fullscreen Play Fab ?. ripple Color Ġ= ĠContext Compat . getColor ( require Context (), ĠR . color . color Green ) ĊĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġthe Ġdialog Ġon Ġclicking Ġthe Ġimage ĊĠĠĠĠĠĠĠ Ġbinding ?. fullscreen Play Fab ?. setOnClickListener Ġ{ Ġplay Set Of Images () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding ?. fullscreen Rew ind Fab ?. setOnClickListener Ġ{ Ġre wind Set Of Images () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding ?. fullscreen Back Fab ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding ?. fullscreen Exit Fab ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġa Ġlistener Ġto Ġchange Ġthe Ġcurrent Ġphoto Ġon Ġswipe ĊĠĠĠĠĠĠĠ Ġval Ġswipe Listener Ġ= ĠOn Swipe Touch Listener ( require Context (), Ġ{ Ġprevious Photo () Ġ}, Ġ{ Ġnext Photo () Ġ}) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġhandle Ġclick able Ġview Ġaccessibility ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Click ableView Accessibility ") ĊĠĠĠĠĠĠĠ Ġbinding ?. fullscreen Image Bottom ?. setOn Touch Listener ( swipe Listener ) ĊĠĠĠĠĠĠĠ Ġload Image Pair () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠLoads Ġthe Ġcurrent Ġposition Ġse am lessly ĊĠĠĠ Ġprivate Ġfun Ġload Image Pair () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġphoto Files [ position ] ĊĠĠĠĠĠĠĠ Ġval Ġbottom Image Ġ= Ġbinding !!. fullscreen Image Bottom ĊĠĠĠĠĠĠĠ Ġval Ġtop Image Ġ= Ġbinding !!. fullscreen Image Top ĊĠĠĠĠĠĠĠ Ġimage Is Loaded Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġbinding ?. fullscreen Position Text view ?. text Ġ= ĠgetString ( R . string . details _ photo _ number _ out _ of , Ġposition Ġ+ Ġ 1 , Ġphotos . size ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 . ĠThe Ġfirst Ġg lide Ġcall : ĠFirst Ġload Ġthe Ġimage Ġinto Ġthe Ġnext Ġimage Ġview Ġon Ġtop Ġof Ġthe Ġcurrent ĊĠĠĠĠĠĠĠ ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( photos [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Drawable ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < Drawable ? >, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( require Context (), ĠgetString ( R . string . error _ loading _ image ), ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable ?, Ġmodel : ĠAny , Ġtarget : ĠTarget < Drawable ? >, ĠdataSource : ĠDataSource , Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġjust Ġloaded Ġimage Ġon Ġthe Ġtop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Image . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 . ĠThe Ġsecond Ġg lide Ġcall : ĠThen Ġload Ġthe Ġimage Ġinto Ġthe Ġcurrent Ġimage Ġon Ġthe Ġbottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Drawable ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny , Ġtarget : ĠTarget < Drawable ? >, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( require Context (), ĠgetString ( R . string . error _ loading _ image ), ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Post p oned Enter Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable ?, Ġmodel : ĠAny , Ġtarget : ĠTarget < Drawable ? >, ĠdataSource : ĠDataSource , Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġcomplete Ġhide Ġthe Ġtop Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Image . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRecord Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Is Loaded Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAnd Ġbegin Ġthe Ġshared Ġelement Ġtransition Ġif Ġappropriate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Post p oned Enter Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( bottom Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( top Image ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġre wind Set Of Images () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġalready Ġplaying Ġthen Ġstop ĊĠĠĠĠĠĠĠ Ġif Ġ( playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Playing () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġnot Ġenough Ġphotos Ġgive Ġuser Ġfeedback ĊĠĠĠĠĠĠĠ Ġif Ġ( photos . size Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding !!. fullscreen Image Bottom , ĠR . string . add _ more _ photos , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġplay Ġstate ĊĠĠĠĠĠĠĠ Ġplaying Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠHandle ĠUI ĊĠĠĠĠĠĠĠ Ġset Fab State Playing () ĊĠĠĠĠĠĠĠ Ġ// ĠOverride Ġthe Ġplay Ġposition Ġto Ġend ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġphotos . size Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSchedule Ġthe Ġrecursive Ġsequence ĊĠĠĠĠĠĠĠ Ġschedule Load Photo ( forward Ġ= Ġfalse ) Ġ// ĠRe cursively Ġloads Ġthe Ġrest Ġof Ġset Ġfrom Ġbeginning ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplay Set Of Images () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġalready Ġplaying Ġthen Ġstop ĊĠĠĠĠĠĠĠ Ġif Ġ( playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Playing () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġnot Ġenough Ġphotos Ġgive Ġuser Ġfeedback ĊĠĠĠĠĠĠĠ Ġif Ġ( photos . size Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding !!. fullscreen Image Bottom , ĠR . string . add _ more _ photos , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġplay Ġstate ĊĠĠĠĠĠĠĠ Ġplaying Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠHandle ĠUI ĊĠĠĠĠĠĠĠ Ġset Fab State Playing () ĊĠĠĠĠĠĠĠ Ġ// ĠOverride Ġthe Ġplay Ġposition Ġto Ġbeginning Ġif Ġcurrently Ġalready Ġat Ġthe Ġend ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ>= Ġphotos . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSchedule Ġthe Ġrecursive Ġsequence ĊĠĠĠĠĠĠĠ Ġschedule Load Photo ( forward Ġ= Ġtrue ) Ġ// ĠRe cursively Ġloads Ġthe Ġrest Ġof Ġset Ġfrom Ġbeginning ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġschedule Load Photo ( forward : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġ 0 Ġ|| Ġposition Ġ>= Ġphotos . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġif Ġ( forward ) Ġphotos . size Ġ- Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Playing () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġplay Job Ġ= Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( playback Interval ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġimage Ġis Ġloaded Ġload Ġthe Ġnext Ġphoto ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Is Loaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Image Pair () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( forward ) Ġposition ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġposition -- ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Load Photo ( forward ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOtherwise Ġcheck Ġagain Ġafter Ġthe Ġinterval ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Load Photo ( forward ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Playing () Ġ{ Ġ// ĠSet Ġcolor Ġof Ġplay Ġfab ĊĠĠĠĠĠĠĠ Ġplay Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġplaying Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset Fab State Stopped () ĊĠĠĠĠĠĠĠ Ġload Image Pair () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSets Ġthe Ġtwo Ġplay Ġbuttons Ġto Ġred Ġwith Ġa Ġstop Ġicon ĊĠĠĠ Ġprivate Ġfun Ġset Fab State Playing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfullscreen Play Fab Ġ= Ġbinding ?. fullscreen Play Fab ĊĠĠĠĠĠĠĠ Ġfullscreen Play Fab ?. background Tint List Ġ= ĠColor State List . valueOf ( Context Compat . getColor ( require Context (), ĠR . color . color Red Accent )) ĊĠĠĠĠĠĠĠ Ġfullscreen Play Fab ?. ripple Color Ġ= ĠContext Compat . getColor ( require Context (), ĠR . color . color Red Accent ) ĊĠĠĠĠĠĠĠ Ġfullscreen Play Fab ?. setImage Resource ( R . drawable . ic _ stop _ white _ 2 4 dp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSets Ġthe Ġtwo Ġplay Ġbuttons Ġto Ġgreen Ġwith Ġa Ġplay Ġicon ĊĠĠĠ Ġprivate Ġfun Ġset Fab State Stopped () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfullscreen Play Fab Ġ= Ġbinding ?. fullscreen Play Fab ĊĠĠĠĠĠĠĠ Ġfullscreen Play Fab ?. background Tint List Ġ= ĠColor State List . valueOf ( Context Compat . getColor ( require Context (), ĠR . color . color Green )) ĊĠĠĠĠĠĠĠ Ġfullscreen Play Fab ?. ripple Color Ġ= ĠContext Compat . getColor ( require Context (), ĠR . color . color Green ) ĊĠĠĠĠĠĠĠ Ġfullscreen Play Fab ?. setImage Resource ( R . drawable . ic _ play _ arrow _ white _ 2 4 dp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnext Photo () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( playing ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġphotos . size Ġ- Ġ 1 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġposition ++ ĊĠĠĠĠĠĠĠ Ġload Image Pair () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprevious Photo () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( playing ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġposition -- ĊĠĠĠĠĠĠĠ Ġload Image Pair () ĊĠĠĠ Ġ} Ċ Ċ }