package Ġcom . labs . pb ro ther . free gallery . fragments Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . core . content . File Provider Ċ import Ġandroidx . palette . graphics . Palette Ċ import Ġandroid . view . Gesture Detector Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . dav em or ris sey . labs . sub scale view . Image Source Ċ import Ġcom . dav em or ris sey . labs . sub scale view . Sub sampling Scale ImageView Ċ import Ġcom . google . android . ex op layer 2 . Default Load Control Ċ import Ġcom . google . android . ex op layer 2 . Default Render ers Factory Ċ import Ġcom . google . android . ex op layer 2 . Exo Player Factory Ċ import Ġcom . google . android . ex op layer 2 . Simple Exo Player Ċ import Ġcom . google . android . ex op layer 2 . extractor . Default Extract ors Factory Ċ import Ġcom . google . android . ex op layer 2 . source . Extractor Media Source Ċ import Ġcom . google . android . ex op layer 2 . source . Media Source Ċ import Ġcom . google . android . ex op layer 2 . track selection . Default Track Selector Ċ import Ġcom . google . android . ex op layer 2 . ui . Player View Ċ import Ġcom . google . android . ex op layer 2 . upstream . Default DataSource Factory Ċ import Ġcom . google . android . ex op layer 2 . util . Util Ċ import Ġcom . labs . pb ro ther . free gallery . Build Config Ċ import Ġcom . labs . pb ro ther . free gallery . R Ċ import Ġcom . labs . pb ro ther . free gallery . controller . Item Ċ import Ġcom . labs . pb ro ther . free gallery . controller . TYPE _ IMAGE Ċ import Ġcom . labs . pb ro ther . free gallery . prefs Ċ import Ġkotlinx . android . synt hetic . main . fragment _ single picture _ slide _ page . view .* Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġorg . jetbrains . ank o . ui Thread Ċ import Ġjava . io . File ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġsim on Ġon Ġ 3 0 . 1 2 . 1 5 . Ċ Ġ*/ Ċ class ĠImage Page Fragment Ġ: Ġandroidx . fragment . app . Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠimageView : ĠSub sampling Scale ImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvid View : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvid Icon : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgesture Detector : ĠGest ure Detector ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem : ĠItem ĊĠĠĠ Ġprivate Ġvar Ġuse Image Color As Background Ġ= Ġtrue ĊĊĊĠĠĠ Ġ// Ġex o Ġplayer Ġstuff ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġex o View : ĠPlayer View ĊĠĠĠ Ġprivate Ġvar Ġex o Player : ĠSimple Exo Player ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġplay When Ready Ġ= Ġfalse ĊĠĠĠ Ġvar Ġcurrent Window Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġplayback Position : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġretain Instance Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġuse Image Color As Background Ġ= Ġprefs . use Image Color As Background ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ single picture _ slide _ page , Ġcontainer , Ġfalse ) Ġas ĠViewGroup ĊĊĠĠĠĠĠĠĠ ĠimageView Ġ= Ġroot View . single picture _ scroll view _ Pic ĊĠĠĠĠĠĠĠ Ġif Ġ( prefs . orientation From Ex if ) ĠimageView . orientation Ġ= ĠSub sampling Scale ImageView . OR IENTATION _ USE _ EX IF ĊĊĠĠĠĠĠĠĠ Ġvid View Ġ= Ġroot View . single picture _ scroll view _ V id ĊĠĠĠĠĠĠĠ Ġvid Icon Ġ= Ġroot View . single picture _ scroll view _ V id Icon ĊĠĠĠĠĠĠĠ Ġex o View Ġ= Ġroot View . single picture _ scroll view _ video _ view ĊĊĠĠĠĠĠĠĠ Ġdisplay () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( Util . SDK _ INT Ġ<= Ġ 2 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Player () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġif Ġ( Util . SDK _ INT Ġ> Ġ 2 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Player () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Player ( uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġex o Player Ġ= ĠEx o Player Factory . new Simple Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Render ers Factory ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Track Selector (), ĠDefault Load Control ()) ĊĊĠĠĠĠĠĠĠ Ġex o View . player Ġ= Ġex o Player ĊĠĠĠĠĠĠĠ Ġex o Player ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay When Ready Ġ= Ġplay When Ready ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek To ( current Window , Ġplayback Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Source Ġ= Ġbuild Media Source ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare ( media Source , Ġtrue , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġex o View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// private Ġfun Ġbuild Media Source ( uri : ĠUri ): ĠMedia Source Ġ= ĠExtract or Media Source . Factory ( Default Http DataSource Factory (" ex op layer - code lab ")). create Media Source ( uri ) ĊĠĠĠ Ġprivate Ġfun Ġbuild Media Source ( uri : ĠUri ): ĠMedia Source Ġ= ĠExtract or Media Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault DataSource Factory ( context , Ġ" foo agent "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Extract ors Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ) ĊĊĠĠĠ Ġprivate Ġfun Ġrelease Player () Ġ{ ĊĠĠĠĠĠĠĠ Ġex o Player ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback Position Ġ= Ġcurrent Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Window Ġ= Ġcurrent Window Index ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay When Ready Ġ= Ġplay When Ready ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex o Player Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġdisplay () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġvideos Ġwill Ġbe Ġdisplay es Ġdifferently Ġfrom Ġimages Ġ... ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ IMAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" gif " Ġ== ĠFile ( item . path ). extension . toLowerCase ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvid View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( item . file Uri String ). into ( vid View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Executor ( AsyncTask . THREAD _ POOL _ EXECUT OR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Minimum Tile D pi ( 1 9 6 ) Ġ// Ġ 1 9 6 Ġ-> Ġrecommendation Ġfrom Ġfr anc isco fr anco Ġon Ġgithub ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image ( Image Source . uri ( item . path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Touch Listener Ġ{ Ġview , Ġmotion Event Ġ-> Ġgesture Detector . on Touch Event ( motion Event ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset BackgroundColor Based On Image () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ- Ġevaluate Ġif Ġworth Ġit Ġto Ġmake Ġown Ġvideo Ġactivity / fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( false ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Player ( Uri . parse ( item . file Uri String )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay G lide View For Video () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisplay G lide View For Video () Ġ{ ĊĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġvid View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġvid Icon . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġvid Icon . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ GRANT _ READ _ URI _ PERMISSION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" video /* " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvid Ġ= ĠFile ( item . path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfoo Ġ= ĠEnvironment . get External Storage Directory (). absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠFile Provider . get Uri For File ( context !! , ĠBuild Config . APPLICATION _ ID Ġ+ Ġ". provider ", Ġvid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= Ġuri ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( item . file Uri String ). into ( vid View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset BackgroundColor Based On Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( use Image Color As Background ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfoo Ġ= Ġandroidx . palette . graphics . Palette . from ( Bitmap Factory . decode File ( item . path )). generate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= Ġfoo . get Dark V ibr ant Color ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( 0 Ġ== Ġcolor ) Ġfoo . get Dark Mut ed Color ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( 0 Ġ== Ġcolor ) Ġcolor Ġ= Ġfoo . get V ibr ant Color ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( 0 Ġ== Ġcolor ) Ġcolor Ġ= Ġfoo . get Mut ed Color ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset m Gesture Detector ( gesture Detector : ĠGest ure Detector ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . gesture Detector Ġ= Ġgesture Detector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Item ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . item Ġ= Ġitem ĊĠĠĠ Ġ} Ċ } Ċ