/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠPeng Ġfe i ĠPan Ġ< pan p fp an pf @ outlook . me > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġme . pan pf . sketch . sample . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġkotlinx . android . synt hetic . main . fragment _ detail .* Ċ import Ġme . pan pf . adapter . pager . Assembly Fragment State Pager Adapter Ċ import Ġme . pan pf . sketch . sample . R Ċ import Ġme . pan pf . sketch . sample . base . Base Fragment Ċ import Ġme . pan pf . sketch . sample . base . Bind ContentView Ċ import Ġme . pan pf . sketch . sample . bean . Image Ċ import Ġme . pan pf . sketch . sample . event . Register Event Ċ import Ġme . pan pf . sketch . sample . item . Image Fragment Item Factory Ċ import Ġme . pan pf . sketch . sample . util . Page Number Setter Ċ import Ġme . pan pf . sketch . sample . util . ViewPager Player Ċ import Ġme . pan pf . sketch . sample . widget . Zoom Out Page Transformer Ċ import Ġme . pan pf . sketch . zoom . Image Zoom er Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . green robot . event bus . Subscribe Ċ Ċ @ Register Event Ċ @ Bind ContentView ( R . layout . fragment _ detail ) Ċ class ĠImage Detail Fragment Ġ: ĠBase Fragment (), ĠImage Zoom er . On View Tap Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġimage List : ĠList < Image >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġloading Image Options Key : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġposition : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġhandler : ĠHandler ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġview Pager Player : ĠView Pager Player ĊĠĠĠ Ġprivate Ġvar Ġrecover Play : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġstart Play : ĠStart Play ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġhandler Ġ= ĠHandler () ĊĠĠĠĠĠĠĠ Ġstart Play Ġ= ĠStart Play () ĊĊĠĠĠĠĠĠĠ Ġvar Ġdata Transfer Key : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Transfer Key Ġ= Ġit . getString ( PARAM _ REQUIRED _ STRING _ DATA _ TRANSFER _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Image Options Key Ġ= Ġit . getString ( PARAM _ REQUIRED _ STRING _ LOADING _ IMAGE _ OPTIONS _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġit . getInt ( PARAM _ OPTIONAL _ INT _ DEFAULT _ POSITION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġimage List Ġ= Ġdata Transfer Helper . get ( data Transfer Key ) Ġas ĠList < Image >? ĊĠĠĠĠĠĠĠ Ġif Ġ( image List Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Not Ġfound Ġimage Ġlist Ġby Ġdata Transfer Key : Ġ" Ġ+ Ġdata Transfer Key !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġview Pager Player Ġ= ĠView Pager Player ( pager _ detail _ content ) ĊĠĠĠĠĠĠĠ ĠPage Number Setter ( text _ detail _ currentItem , Ġpager _ detail _ content ) ĊĠĠĠĠĠĠĠ Ġpager _ detail _ content . set Page Transformer ( false , ĠZoom Out Page Transformer ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( image List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpager Adapter Ġ= ĠAssembly Fragment State Pager Adapter ( child FragmentManager , Ġimage List !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpager Adapter . addItem Factory ( Image Fragment Item Factory ( context , Ġloading Image Options Key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpager _ detail _ content . adapter Ġ= Ġpager Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpager _ detail _ content . currentItem Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ detail _ currentItem . text Ġ= ĠString . format ("% d ", Ġposition Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ detail _ count Item . text Ġ= Ġimage List !!. size . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). register ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( recover Play Ġ&& Ġ! view Pager Player . is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler !!. post Delayed ( start Play , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager Player . is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager Player . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecover Play Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandler !!. remove Callbacks ( start Play ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Tap ( view : ĠView , Ġx : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ æŃ£åľ¨ æĴŃæĶ¾ å°± åħ³éĹŃ èĩªåĬ¨ æĴŃæĶ¾ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Pager Player . is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager Player . stop () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Stop Ġauto Ġplay ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġ@ Subscribe ĊĠĠĠ Ġfun Ġon Event ( event : ĠImage Fragment . Play Image Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview Pager Player . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). unregister ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠStart Play Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager Player . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecover Play Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠPARAM _ REQUIRED _ STRING _ DATA _ TRANSFER _ KEY Ġ= Ġ" PARAM _ REQUIRED _ STRING _ DATA _ TRANSFER _ KEY " ĊĠĠĠĠĠĠĠ Ġval ĠPARAM _ REQUIRED _ STRING _ LOADING _ IMAGE _ OPTIONS _ KEY Ġ= Ġ" PARAM _ REQUIRED _ STRING _ LOADING _ IMAGE _ OPTIONS _ KEY " ĊĠĠĠĠĠĠĠ Ġval ĠPARAM _ OPTIONAL _ INT _ DEFAULT _ POSITION Ġ= Ġ" PARAM _ OPTIONAL _ INT _ DEFAULT _ POSITION " ĊĠĠĠ Ġ} Ċ } Ċ