package Ġt aiwan . no 1 . app . ui . fragments Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . annotation . Layout Res Ċ import Ġandroid . support . v 7 . widget . Card View Ċ import Ġandroid . transition . Transition Inflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . Image Switch er Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . bump tech . glide . request . animation . G lide Animation Ċ import Ġcom . g ig am ole . infinite cycle view pager . Horizontal Infinite Cycle ViewPager Ċ import Ġcom . jak ew h art on . r xb ind ing . support . v 4 . view . page Selections Ċ import Ġk ot ter knife . bind View Ċ import Ġt aiwan . no 1 . app . App Ċ import Ġt aiwan . no 1 . app . R Ċ import Ġt aiwan . no 1 . app . internal . di . annotations . Per Fragment Ċ import Ġt aiwan . no 1 . app . internal . di . components . Fragment Component Ċ import Ġt aiwan . no 1 . app . mvp . contracts . fragment . Movie Gallery Contract Ċ import Ġt aiwan . no 1 . app . mvp . models . Image Profile Model Ċ import Ġt aiwan . no 1 . app . ui . Base Fragment Ċ import Ġt aiwan . no 1 . app . ui . adapter . Back drop Pager Adapter Ċ import Ġt aiwan . no 1 . app . ui . listeners . G lide Resize Target Listener Ċ import Ġt aiwan . no 1 . app . util ies . Image Loader . I Image Loader Ċ import Ġjavax . inject . Inject ĊĊ Ċ /** Ċ Ġ* ĠShow Ġthe Ġposter Ġphotos Ġof Ġthe Ġmovies Ġand Ġthe Ġactors Ġ[ Base Fragment ]. Ċ Ġ* Ċ Ġ* Ġ@ author Ġ ĠJ i ey i Ċ Ġ* Ġ@ since ĠĠĠ 1 / 1 / 1 7 Ċ Ġ*/ Ċ Ċ @ Per Fragment Ċ class ĠMovie Gallery Fragment Ġ: ĠBase Fragment (), ĠMovie Gallery Contract . View Ġ{ ĊĠĠĠ Ġ// region ĠStatic Ġinitialization ĊĠĠĠ Ġcompanion Ġobject ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġkey Ġname Ġof Ġthe Ġfragment Ġinitialization Ġparameters . ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠARG _ PARAM _ I MAGES : ĠString Ġ= Ġ" param _ images " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġthis Ġfactory Ġmethod Ġto Ġcreate Ġa Ġnew Ġinstance Ġof Ġthis Ġfragment Ġusing Ġthe Ġprovided Ġparameters . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA Ġnew Ġinstance Ġof Ġ[ Movie Gallery Fragment ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( movies : ĠList < Image Profile Model >): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMovie Gallery Fragment Ġ= ĠMovie Gallery Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . arguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Inflater . from ( App . get AppContext ()). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Element Enter Transition Ġ= Ġit . inflate Transition ( R . transition . change _ image _ transform ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . put Parcelable Array ( ARG _ PARAM _ I MAGES , Ġmovies . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠMovie Gallery Contract . Presenter ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġimage Loader : ĠI Image Loader ĊĊĠĠĠ Ġ// region ĠView Ġvariables ĊĠĠĠ Ġprivate Ġval Ġh ic vp Gallery Ġby Ġbind View < Horizontal Infinite Cycle ViewPager >( R . id . h ic vp _ gallery ) ĊĠĠĠ Ġprivate Ġval Ġis Background Ġby Ġbind View < Image Switch er >( R . id . is _ gallery _ background ) ĊĠĠĠ Ġprivate Ġval Ġtv Pager Ġby Ġbind View < TextView >( R . id . tv _ pager ) ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠLocal Ġvariables ĊĠĠĠ Ġ// ĠGet Ġthe Ġarguments Ġfrom Ġthe Ġbundle Ġhere . ĊĠĠĠ Ġprivate Ġval Ġarg Movie Images : ĠList < Image Profile Model > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . arguments . get Parcelable Array ( ARG _ PARAM _ I MAGES ). toList () Ġas ĠList < Image Profile Model > ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠFragment Ġlifecycle ĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġthis . presenter . resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġthis . presenter . pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAfter Ġsuper . on Destroy () Ġis Ġexecuted , Ġthe Ġpresenter Ġwill Ġbe Ġdestroy . ĠSo Ġthe Ġpresenter Ġshould Ġbe ĊĠĠĠĠĠĠĠ Ġ// Ġexecuted Ġbefore Ġsuper . on Destroy (). ĊĠĠĠĠĠĠĠ Ġthis . presenter . destroy () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠInitialization 's Ġorder ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInject Ġthis Ġfragment Ġand Ġ[ Fragment Component ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinject () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . getComponent ( Fragment Component :: class . java ). inject ( Movie Gallery Fragment @ Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthis Ġfragment Ġxml Ġlayout . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Layout Res ] Ġxml Ġlayout . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Layout Res ĊĠĠĠ Ġoverride Ġfun Ġinf late View (): ĠInt Ġ= ĠR . layout . fragment _ gallery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġpresenter Ġinitialization Ġin Ġ[ onCreate View ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinit Presenter () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . presenter . init ( Movie Gallery Fragment @ Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialization Ġof Ġthis Ġfragment . ĠSet Ġthe Ġlisteners Ġor Ġview Ġcomponents ' Ġattribut ions . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠsavedInstanceState Ġthe Ġprevious Ġfragment Ġdata Ġstatus Ġafter Ġthe Ġsystem Ġcalls Ġ[ on Pause ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinit ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFIX ED : Ġ 2 / 1 / 1 7 ĠUsed Ġ[ Image Switch er ] Ġto Ġfix Ġthe Ġanimation Ġchanging Ġof Ġthe Ġbackground s Ġsmooth ly . ĊĠĠĠĠĠĠĠ Ġthis . is Background . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġinner Ġimage Ġview Ġby Ġfactory Ġpattern . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView ( Movie Gallery Fragment @ Ġthis . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAssign Ġthe Ġlayout Ġis Ġmatch Ġthe Ġparent . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . layout Params Ġ= ĠFrame Layout . LayoutParams ( ViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġchanging Ġimages ' Ġanimation . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . in Animation Ġ= ĠAnimation Utils . load Animation ( this @ Movie Gallery Fragment . context , Ġandroid . R . anim . fade _ in ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . out Animation Ġ= ĠAnimation Utils . load Animation ( this @ Movie Gallery Fragment . context , Ġandroid . R . anim . fade _ out ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . presenter . update Post ers ( this . arg Movie Images ) ĊĠĠĠĠĠĠĠ Ġthis . presenter . update Page Of Number () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Post ers ( view List : ĠList < View >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . h ic vp Gallery . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . adapter Ġ= ĠBack drop Pager Adapter ( view List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Movie Gallery Fragment . presenter . update Old Item Index ( this . currentItem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFIX ED : Ġ 2 / 1 / 1 7 ĠSometimes Ġthe Ġpage 's Ġbeen Ġselected Ġbut Ġthe Ġpresent Ġitem Ġis Ġstill Ġnot Ġchanged . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFIX ED : ĠSo ĠI 'm Ġusing Ġfinding Ġthe Ġitem 's Ġspecific Ġtag Ġto Ġfix Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . page Selections (). compose ( this @ Movie Gallery Fragment . bind To Lifecycle < Int > ()). subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Ratio : ĠDouble Ġ= Ġthis @ Movie Gallery Fragment . is Background . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width . toDouble () Ġ/ Ġit . height . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġcurrent Ġblur Ġimage Ġin Ġview pager 's Ġbackground . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Movie Gallery Fragment . presenter . attach Background From ( this , Ġis Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Single Post er ( uri : ĠString , Ġposition : ĠInt , ĠimageView : ĠImageView , Ġcv Frame : ĠCard View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . image Loader . display ( uri , Ġlistener Ġ= Ġobject Ġ: ĠG lide Resize Target Listener ( imageView , Ġcv Frame ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠBitmap , Ġg lide Animation : ĠG lide Animation < in ĠBitmap >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Resource Ready ( resource , Ġg lide Animation ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Ratio : ĠDouble Ġ= Ġthis @ Movie Gallery Fragment . is Background . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width . toDouble () Ġ/ Ġit . height . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Movie Gallery Fragment . presenter . on Resource Finished ( this @ Movie Gallery Fragment . h ic vp Gallery , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Ratio , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Current Num Of Post ers ( total : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . tv Pager . text Ġ= Ġtotal ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠView Ġimplementation ĊĠĠĠ Ġoverride Ġfun Ġshow Blur Background ( image : ĠBitmap ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFIX ED : Ġ 3 / 1 1 / 1 7 Ġhttp :// stackoverflow . com / questions / 1 0 9 1 9 2 4 0 / fragment - my fragment - not - attached - to - activity ĊĠĠĠĠĠĠĠ Ġif Ġ( this . is Added ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Background . setImage Drawable ( Bitmap Drawable ( resources , Ġimage )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion Ċ } Ċ