@ file : Jvm Name (" RequestBuilder Ext Kt ") Ċ Ċ package Ġcom . ch ay ang ko on . champ . glide . k tx Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . View Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . RequestBuilder Ċ 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 . Custom Target Ċ import Ġcom . bump tech . glide . request . target . Custom View Target Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . bump tech . glide . request . transition . Transition Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . channels . await Close Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . callback Flow Ċ import Ġkotlinx . coroutines . suspend C ancellable Coroutine Ċ import Ġkotlin . coroutines . resume Ċ Ċ /** Ċ Ġ* ĠCreate Ġand Ġsets Ġa Ġnew Ġ[ RequestListener ] Ġto Ġmonitor Ġthe Ġresource Ġload Ġwith Ġlambda . Ċ Ġ* ĠShould ĠUse Ġwhen Ġrequest Ġonly Ġone Ġin Ġclass Ġif Ġgreater Ġthan Ġone Ġshould Ġuse Ċ Ġ* Ġ[ create RequestListener ] Ġfor Ġmake Ġ[ RequestListener ] Ġinstead Ċ Ġ* Ġand Ġset Ġto Ġall Ġrequest . Ċ Ġ* Ċ Ġ* Ġ[ G lide ] Ġrecommend Ġbest Ġway Ġis Ġcreate Ġa Ġsingle Ġinstance Ġof Ġan Ġexception Ġhandler Ċ Ġ* Ġper Ġtype Ġof Ġrequest Ġ( usually Ġactivity / fragment ) Ġrather Ġthan Ċ Ġ* Ġpass Ġone Ġin Ġper Ġrequest Ġto Ġavoid Ġsome Ġredundant Ġobject Ġallocation . Ċ Ġ* Ċ Ġ* Ġ< p > Sub sequent Ġcalls Ġto Ġthis Ġmethod Ġwill Ġreplace Ġpreviously Ġset Ġlisteners . ĠTo Ġset Ġmultiple Ċ Ġ* Ġlisteners , Ġuse Ġ[ addListener ] Ġinstead . Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ T ] ĠThe Ġtype Ġof Ġresource Ġbeing Ġloaded . Ċ Ġ* Ċ Ġ* ĠExample Ġ: Ċ Ġ* Ġ``` Ċ Ġ* ĠG lide . with ( activity ) Ċ Ġ* Ġ. load (" https :// www . example . com / image . jpg ") Ċ Ġ* Ġ. listener ({ Ġresource , Ġmodel , Ġtarget , Ġdatasource , Ġis First Resource Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġresource Ġwhen Ġload Ġsuccess Ċ Ġ* ĠĠĠĠ Ġreturn Ġfalse Ċ Ġ* Ġ}, Ġ{ Ġexception , Ġmodel , Ġtarget , Ġis First Resource Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġwhen Ġload Ġfailed Ċ Ġ* ĠĠĠĠ Ġreturn Ġtrue Ġ// Ġprevent ĠonLoad Failed Ġfrom Ġbeing Ġcalled Ġon Ġthe ĠTarget Ċ Ġ* Ġ}) Ċ Ġ* Ġ. into ( imageView ) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Resource Ready ĠThe Ġon Resource Ready Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġcompletes Ġsuccessfully , Ċ Ġ* Ġimmediately Ġbefore Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) }. Ċ Ġ* Ġreturn Ġtrue Ġif Ġprevent Ġ{@ link ĠTarget # on Load Failed ( Drawable )} Ġfrom Ġbeing Ġcalled Ġon Ġthe ĠTarget Ċ Ġ* Ġor Ġfalse Ġto Ġallow Ġ{@ link ĠTarget # on Load Failed ( Drawable )} Ġto Ġbe Ġcalled Ġon ĠTarget . Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Failed ĠThe ĠonLoad Failed Ġwill Ġbe Ġinvoked Ġwhen Ġan Ġexception Ġoccurs Ġduring Ġa Ġload , Ċ Ġ* Ġimmediately Ġbefore Ġ{@ link ĠTarget # on Load Failed ([ Drawable ]) }. Ċ Ġ* Ġreturn Ġtrue Ġif Ġprevent Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) } from Ġbeing Ġcalled Ġon Ġthe ĠTarget Ċ Ġ* Ġor Ġfalse Ġto Ġallow Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) } Ġto Ġbe Ġcalled Ġon ĠTarget . Ċ Ġ* Ċ Ġ* Ġ@ return ĠThis Ġ[ RequestBuilder ]. Ċ Ġ*/ Ċ inline Ġfun Ġ< T > ĠRequest Builder < T >. listener ( ĊĠĠĠ Ġcross inline Ġon Resource Ready : Ġ( T , ĠAny ?, ĠTarget < T > ?, ĠDataSource ?, ĠBoolean ) Ġ-> ĠBoolean , ĊĠĠĠ Ġcross inline ĠonLoad Failed : Ġ( G lide Exception ?, ĠAny ?, ĠTarget < T > ?, ĠBoolean ) Ġ-> ĠBoolean Ċ ): ĠRequest Builder < T > Ġ{ ĊĠĠĠ Ġreturn Ġlistener ( object Ġ: ĠRequest Listener < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource : ĠDataSource ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Resource : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġon Resource Ready . invoke ( resource , Ġmodel , Ġtarget , ĠdataSource , Ġis First Resource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe : ĠG lide Exception ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Resource : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠonLoad Failed . invoke ( e , Ġmodel , Ġtarget , Ġis First Resource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġand Ġadds Ġa Ġnew Ġ[ RequestListener ] Ġwith Ġlambda . ĠIf Ġcalled Ġmultiple Ġtimes , Ċ Ġ* Ġall Ġpassed Ġ[ RequestListener ] Ġwill Ġbe Ġcalled Ġin Ġorder . Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ T ] ĠThe Ġtype Ġof Ġresource Ġbeing Ġloaded . Ċ Ġ* Ċ Ġ* ĠExample Ġ: Ċ Ġ* Ġ``` Ċ Ġ* ĠG lide . with ( activity ) Ċ Ġ* Ġ. load (" https :// www . example . com / image . jpg ") Ċ Ġ* Ġ. addListener ({ Ġresource , Ġmodel , Ġtarget , Ġdatasource , Ġis First Resource Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġresource Ġwhen Ġload Ġsuccess Ċ Ġ* ĠĠĠĠ Ġreturn Ġfalse Ċ Ġ* Ġ}, Ġ{ Ġexception , Ġmodel , Ġtarget , Ġis First Resource Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġwhen Ġload Ġfailed Ċ Ġ* ĠĠĠĠ Ġreturn Ġtrue Ġ// Ġprevent ĠonLoad Failed Ġfrom Ġbeing Ġcalled Ġon Ġthe ĠTarget Ċ Ġ* Ġ}) Ċ Ġ* Ġ. into ( imageView ) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Resource Ready ĠThe Ġon Resource Ready Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġcompletes Ġsuccessfully , Ċ Ġ* Ġimmediately Ġbefore Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) }. Ċ Ġ* Ġreturn Ġtrue Ġif Ġprevent Ġ{@ link ĠTarget # on Load Failed ( Drawable )} Ġfrom Ġbeing Ġcalled Ġon Ġthe ĠTarget Ċ Ġ* Ġor Ġfalse Ġto Ġallow Ġ{@ link ĠTarget # on Load Failed ( Drawable )} Ġto Ġbe Ġcalled Ġon ĠTarget . Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Failed ĠThe ĠonLoad Failed Ġwill Ġbe Ġinvoked Ġwhen Ġan Ġexception Ġoccurs Ġduring Ġa Ġload , Ċ Ġ* Ġimmediately Ġbefore Ġ{@ link ĠTarget # on Load Failed ([ Drawable ]) }. Ċ Ġ* Ġreturn Ġtrue Ġif Ġprevent Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) } from Ġbeing Ġcalled Ġon Ġthe ĠTarget Ċ Ġ* Ġor Ġfalse Ġto Ġallow Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) } Ġto Ġbe Ġcalled Ġon ĠTarget . Ċ Ġ* Ċ Ġ* Ġ@ return ĠThis Ġ[ RequestBuilder ]. Ċ Ġ*/ Ċ inline Ġfun Ġ< T > ĠRequest Builder < T >. addListener ( ĊĠĠĠ Ġcross inline Ġon Resource Ready : Ġ( T , ĠAny ?, ĠTarget < T > ?, ĠDataSource ?, ĠBoolean ) Ġ-> ĠBoolean , ĊĠĠĠ Ġcross inline ĠonLoad Failed : Ġ( G lide Exception ?, ĠAny ?, ĠTarget < T > ?, ĠBoolean ) Ġ-> ĠBoolean Ċ ): ĠRequest Builder < T > Ġ{ ĊĠĠĠ Ġreturn Ġadd Listener ( object Ġ: ĠRequest Listener < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource : ĠDataSource ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Resource : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġon Resource Ready . invoke ( resource , Ġmodel , Ġtarget , ĠdataSource , Ġis First Resource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe : ĠG lide Exception ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Resource : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠonLoad Failed . invoke ( e , Ġmodel , Ġtarget , Ġis First Resource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġnew Ġ[ Custom Target ] Ġand Ġto Ġload Ġthe Ġresource Ġin Ġits Ġoriginal Ġsize Ċ Ġ* Ġinto Ġthe ĠCustom Target Ġwith Ġlambda . Ċ Ġ* Ċ Ġ* ĠExample Ġ: Ċ Ġ* Ġ``` Ċ Ġ* ĠG lide . with ( activity ) Ċ Ġ* Ġ. load (" https :// www . example . com / image . jpg ") Ċ Ġ* Ġ. into Custom Target ({ Ġresource , Ġtransition Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġresource Ċ Ġ* Ġ}, Ġ{ Ġdrawable Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġerror Ġdrawable Ċ Ġ* Ġ}) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ T ] ĠThe Ġtype Ġof Ġresource Ġthat Ġwill Ġbe Ġdelivered Ġto Ġthe Ġ[ Custom Target ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Resource Ready ĠThe Ġon Resource Ready Ġwill Ġbe Ġinvoked Ġwhen Ġthe Ġresource Ġload Ġhas Ġfinished . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) } Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Failed ĠThe ĠonLoad Failed Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġfails . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠTarget # on Load Failed ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Started ĠThe ĠonLoad Started Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġis Ġstarted . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠTarget # on Load Started ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Cle ared ĠThe ĠonLoad Cle ared Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġis Ġcancelled Ċ Ġ* Ġand Ġits Ġresources Ġare Ġfreed . ĠSee Ġalso Ġ{@ link ĠTarget # on Load Cle ared ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ return ĠThe Ġ[ Custom Target ] Ċ Ġ*/ Ċ inline Ġfun Ġ< T > ĠRequest Builder < T >. into Custom Target ( ĊĠĠĠ Ġcross inline Ġon Resource Ready : Ġ( T , ĠTransition < in ĠT > ?) Ġ-> ĠUnit , ĊĠĠĠ Ġcross inline ĠonLoad Failed : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġcross inline ĠonLoad Started : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġcross inline ĠonLoad Cle ared : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{} Ċ ): ĠCustom Target < T > Ġ{ ĊĠĠĠ Ġreturn Ġinto ( object Ġ: ĠCustom Target < T >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Started ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Started . invoke ( placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠT , Ġtransition : ĠTransition < in ĠT > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Resource Ready . invoke ( resource , Ġtransition ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( error Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Failed . invoke ( error Drawable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Cle ared . invoke ( placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġnew Ġ[ Custom Target ] Ġand Ġto Ġload Ġthe Ġresource Ġwith Ġ[ width ] Ġand Ġ[ height ] Ċ Ġ* Ġas Ġthe Ġrequested Ġsize Ġinto Ġthe ĠCustom Target Ġwith Ġlambda . Ċ Ġ* Ċ Ġ* ĠExample Ġ: Ċ Ġ* Ġ``` Ċ Ġ* ĠG lide . with ( activity ) Ċ Ġ* Ġ. load (" https :// www . example . com / image . jpg ") Ċ Ġ* Ġ. into Custom Target ( 1 0 0 , Ġ 1 0 0 , Ġ{ Ġresource , Ġtransition Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġresource Ċ Ġ* Ġ}, Ġ{ Ġdrawable Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġerror Ġdrawable Ċ Ġ* Ġ}) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ T ] ĠThe Ġtype Ġof Ġresource Ġthat Ġwill Ġbe Ġdelivered Ġto Ġthe Ġ[ Custom Target ]. Ċ Ġ* Ġ@ param Ġwidth ĠThe Ġrequested Ġwidth Ġ(> Ġ 0 , Ġor Ġ== Ġ[ Target . SIZE _ ORIGIN AL ]). Ċ Ġ* Ġ@ param Ġheight ĠThe Ġrequested Ġheight Ġ(> Ġ 0 , Ġor Ġ== Ġ[ Target . SIZE _ ORIGIN AL ]). Ċ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġwidth / height Ġdoesn 't Ġmeet Ġ(> Ġ 0 , Ġor Ġ== Ġ[ Target . SIZE _ ORIGIN AL ]) Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Resource Ready ĠThe Ġon Resource Ready Ġwill Ġbe Ġinvoked Ġwhen Ġthe Ġresource Ġload Ġhas Ġfinished . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) } Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Failed ĠThe ĠonLoad Failed Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġfails . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠTarget # on Load Failed ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Started ĠThe ĠonLoad Started Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġis Ġstarted . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠTarget # on Load Started ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Cle ared ĠThe ĠonLoad Cle ared Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġis Ġcancelled Ċ Ġ* Ġand Ġits Ġresources Ġare Ġfreed . ĠSee Ġalso Ġ{@ link ĠTarget # on Load Cle ared ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ return ĠThe Ġ[ Custom Target ] Ċ Ġ*/ Ċ inline Ġfun Ġ< T > ĠRequest Builder < T >. into Custom Target ( ĊĠĠĠ Ġwidth : ĠInt , ĊĠĠĠ Ġheight : ĠInt , ĊĠĠĠ Ġcross inline Ġon Resource Ready : Ġ( T , ĠTransition < in ĠT > ?) Ġ-> ĠUnit , ĊĠĠĠ Ġcross inline ĠonLoad Failed : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġcross inline ĠonLoad Started : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġcross inline ĠonLoad Cle ared : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{} Ċ ): ĠCustom Target < T > Ġ{ ĊĠĠĠ Ġreturn Ġinto ( object Ġ: ĠCustom Target < T >( width , Ġheight ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Started ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Started . invoke ( placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠT , Ġtransition : ĠTransition < in ĠT > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Resource Ready . invoke ( resource , Ġtransition ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( error Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Failed . invoke ( error Drawable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Cle ared . invoke ( placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġnew Ġ[ Custom View Target ] Ġand Ġto Ġload Ġthe Ġresource Ġwith Ġsize Ġof Ġview Ċ Ġ* Ġinto Ġthe ĠCustom View Target Ġwith Ġlambda . Ċ Ġ* Ċ Ġ* ĠExample Ġ: Ċ Ġ* Ġ``` Ċ Ġ* ĠG lide . with ( imageView ) Ċ Ġ* Ġ. load (" https :// www . example . com / image . jpg ") Ċ Ġ* Ġ. into Custom View Target ( imageView , Ġ{ Ġresource , Ġtransition Ġ-> Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġresource Ċ Ġ* Ġ}, Ġ{ Ċ Ġ* ĠĠĠ Ġ// Ġhandle Ġerror Ġdrawable Ċ Ġ* Ġ}) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ T ] ĠThe Ġspecific Ġsubclass Ġof Ġview Ġwrapped Ġby Ġthis Ġtarget Ċ Ġ* Ġ( e . g . Ġ{@ link Ġandroid . widget . ImageView }) Ċ Ġ* Ġ@ param Ġ[ Z ] ĠThe Ġresource Ġtype Ġthis Ġ[ Custom View Target ] Ġwill Ġreceive . Ċ Ġ* Ċ Ġ* Ġ@ param Ġview ĠThe Ġview Ġfor Ġuse Ġdetermine Ġsize Ġfor Ġresource Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Resource Ready ĠThe Ġon Resource Ready Ġwill Ġbe Ġinvoked Ġwhen Ġthe Ġresource Ġload Ġhas Ġfinished . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠTarget # on Resource Ready ([ Object ], Ġ[ Transition ]) } Ċ Ġ* Ċ Ġ* Ġ@ param ĠonLoad Failed ĠThe ĠonLoad Failed Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġload Ġfails . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠTarget # on Load Failed ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Resource Loading ĠThe Ġon Resource Loading Ġwill Ġbe Ġinvoked Ġwhen Ġa Ġresource Ġload Ġis Ġstarted . Ċ Ġ* ĠSee Ġalso Ġ{@ link ĠCustom View Target # on Load Started ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Resource Cle ared ĠThe Ġon Resource Cle ared Ġwill Ġbe Ġinvoked Ġwhen Ġthe Ġresource Ġis Ġno Ġlonger Ċ Ġ* Ġvalid Ġand Ġmust Ġbe Ġfreed ĠSee Ġalso Ġ{@ link ĠCustom View Target # on Resource Cle ared ([ Drawable ]) } Ċ Ġ* Ċ Ġ* Ġ@ return ĠThe Ġ[ Custom View Target ] Ċ Ġ*/ Ċ inline Ġfun Ġ< T Ġ: ĠView , ĠZ > ĠRequest Builder < Z >. into Custom View Target ( ĊĠĠĠ Ġview : ĠT , ĊĠĠĠ Ġcross inline Ġon Resource Ready : Ġ( Z , ĠTransition < in ĠZ > ?) Ġ-> ĠUnit , ĊĠĠĠ Ġcross inline ĠonLoad Failed : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġcross inline Ġon Resource Loading : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġcross inline Ġon Resource Cle ared : Ġ( Drawable ?) Ġ-> ĠUnit Ġ= Ġ{} Ċ ): ĠCustom View Target < T , ĠZ > Ġ{ ĊĠĠĠ Ġreturn Ġinto ( object Ġ: ĠCustom View Target < T , ĠZ >( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Loading ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Resource Loading . invoke ( placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( error Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Failed . invoke ( error Drawable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠZ , Ġtransition : ĠTransition < in ĠZ > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Resource Ready . invoke ( resource , Ġtransition ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Resource Cle ared . invoke ( placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* ĠAwait s Ġresource Ġis Ġready Ġwithout Ġblocking Ġa Ġthread . Ċ Ġ* ĠThis Ġsus pending Ġfunction Ġis Ġcancell able . Ġ@ see Ġ[ suspend C ancellable Coroutine ] Ċ Ġ* Ċ Ġ* ĠExample Ġ: Ċ Ġ* Ġ``` Ċ Ġ* Ġcoroutine Scope . launch Ġ{ Ċ Ġ* ĠĠĠĠ Ġval Ġimage Result Ġ= ĠG lide . with ( activity ) Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ. load (" https :// www . example . com / image . jpg ") Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ. await ( context ) Ċ Ġ* ĠĠĠĠ Ġ// Ġhandle Ġresult Ġof Ġimage Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext ĠA Ġcontext Ġuse Ġin Ġ[ G lide . with ] Ġto Ġclear Ġ[ Custom Target ]. Ċ Ġ* Ġ@ param Ġwidth ĠThe Ġrequested Ġwidth Ġ(> Ġ 0 , Ġor Ġ== Ġ[ Target . SIZE _ ORIGIN AL ]) Ċ Ġ* Ġand Ġoriginal Ġwidth Ġby Ġdefault . Ċ Ġ* Ġ@ param Ġheight ĠThe Ġrequested Ġheight Ġ(> Ġ 0 , Ġor Ġ== Ġ[ Target . SIZE _ ORIGIN AL ]) Ċ Ġ* Ġand Ġoriginal Ġheight Ġby Ġdefault . Ċ Ġ* Ġ@ return Ġ[ Image Result ] ĠThe ĠImage Result Ġis Ġresult Ġfrom Ġload Ġresource Ġinto Ġ[ Custom Target ] Ċ Ġ*/ Ċ suspend Ġfun Ġ< T > ĠRequest Builder < T >. await ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġwidth : ĠInt Ġ= ĠTarget . SIZE _ ORIGIN AL , ĊĠĠĠ Ġheight : ĠInt Ġ= ĠTarget . SIZE _ ORIGIN AL Ċ ) Ġ= Ġsuspend C ancellable Coroutine < Image Result < T >> Ġ{ ĊĠĠĠ Ġval Ġcustom Target : ĠCustom Target < T > Ġ= Ġinto ( object Ġ: ĠCustom Target < T >( width , Ġheight ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠT , Ġtransition : ĠTransition < in ĠT > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . resume ( Image Result . Source Ready ( resource , Ġtransition )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( error Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . resume ( Image Result . Load Failed ( error Drawable )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . resume ( Image Result . Load Cle ared ( placeholder )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġit . invoke On Cancellation Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( context ). clear ( custom Target ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġflow Ġthat Ġproduces Ġvalues Ġfrom Ġthe Ġresult Ġfrom Ġload Ġresource Ġwith Ġ[ Custom Target ]. Ċ Ġ* Ġ@ see Ġ[ callback Flow ] Ċ Ġ* Ċ Ġ* ĠExample Ġ: Ċ Ġ* Ġ``` Ċ Ġ* Ġval Ġimage Result Flow Ġ= ĠG lide . with ( activity ) Ċ Ġ* ĠĠĠĠ Ġ. load (" https :// www . example . com / image . jpg ") Ċ Ġ* ĠĠĠĠ Ġ. into Flow ( context ) Ċ Ġ* Ċ Ġ* Ġcoroutine Scope . launch Ġ{ Ċ Ġ* ĠĠĠĠ Ġimage Result Flow . collect Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ// Ġhandle Ġresult Ġof Ġimage Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext ĠA Ġcontext Ġuse Ġin Ġ[ G lide . with ] Ġto Ġclear Ġ[ Custom Target ]. Ċ Ġ* Ġ@ param Ġwidth ĠThe Ġrequested Ġwidth Ġ(> Ġ 0 , Ġor Ġ== Ġ[ Target . SIZE _ ORIGIN AL ]) Ċ Ġ* Ġand Ġoriginal Ġwidth Ġby Ġdefault . Ċ Ġ* Ġ@ param Ġheight ĠThe Ġrequested Ġheight Ġ(> Ġ 0 , Ġor Ġ== Ġ[ Target . SIZE _ ORIGIN AL ]) Ċ Ġ* Ġand Ġoriginal Ġheight Ġby Ġdefault . Ċ Ġ* Ġ@ return ĠFlow < Image Result > ĠThe Ġ[ Image Result ] Ġis Ġresult Ġfrom Ġload Ġresource Ġinto Ġ[ Custom Target ] Ċ Ġ*/ Ċ @ Experimental Cor outines Api Ċ fun Ġ< T > ĠRequest Builder < T >. into Flow ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġwidth : ĠInt Ġ= ĠTarget . SIZE _ ORIGIN AL , ĊĠĠĠ Ġheight : ĠInt Ġ= ĠTarget . SIZE _ ORIGIN AL Ċ ): ĠFlow < Image Result < T >> Ġ= Ġcallback Flow Ġ{ ĊĠĠĠ Ġval Ġcustom Target : ĠCustom Target < T > Ġ= Ġinto ( object Ġ: ĠCustom Target < T >( width , Ġheight ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Started ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( Image Result . Load Started ( placeholder )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠT , Ġtransition : ĠTransition < in ĠT > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( Image Result . Source Ready ( resource , Ġtransition )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( error Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( Image Result . Load Failed ( error Drawable )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( Image Result . Load Cle ared ( placeholder )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġawait Close Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( context ). clear ( custom Target ) ĊĠĠĠ Ġ} Ċ }