package Ġcom . mark nj unge . food recipe app . ui Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . transition . Change Bounds Ċ import Ġandroid . transition . Transition Manager Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Ant icip ate Over shoot Interpolator Ċ import Ġandroidx . constraint layout . widget . Constraint Set Ċ import Ġandroidx . core . app . Activity Options Compat Ċ import Ġcom . mark nj unge . food recipe app . utils . generate Palette Ċ import Ġcom . mark nj unge . food recipe app . utils . is Dark Ċ import Ġcom . mark nj unge . food recipe app . utils . load Asset Ċ import Ġcom . mark nj unge . food recipe app . utils . rgb String Ċ import Ġcom . mark nj unge . food recipe app . R Ċ import Ġcom . mark nj unge . food recipe app . model . Recipe Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġkotlinx . android . synt hetic . main . activity _ recipe _ details .* Ċ import Ġkotlinx . android . synt hetic . main . include _ recipe _ details .* Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ Ċ class ĠRecipe Details Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRE CI PE _ KEY Ġ= Ġ" recipe " ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( recipe : ĠRecipe , Ġcontext : ĠContext , Ġshared Element View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠRecipe Details Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Recipe Details Activity . RE CI PE _ KEY , Ġrecipe ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠActivity Options Compat . make Scene Transition Animation ( context Ġas ĠActivity , Ġshared Element View , Ġ" recipe Image ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent , Ġoptions . to Bundle ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ recipe _ details ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrecipe Ġ= Ġintent . extras ?. get ( RE CI PE _ KEY ) Ġas ĠRecipe ĊĊĠĠĠĠĠĠĠ Ġimg Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport Finish After Transition () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrecipe . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load Asset ( image ). into ( img Recipe Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Recipe Name . text Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Recipe Fav s . text Ġ= Ġ"${ fav s } K " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Recipe Time . text Ġ= Ġtime . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Recipe Price . text Ġ= Ġprice . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠChange Ġthe Ġcolor Ġof Ġthe Ġarrow Ġbased Ġon Ġthe Ġcolors Ġin Ġthe Ġimage Ġand Ġwhether Ġit 's Ġdark Ġor Ġnot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġget Bitmap From Asset ( this @ Recipe Details Activity , Ġimage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . generate Palette Ġ{ Ġpalette Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġbitmap Ġis Ġdark , Ġuse Ġthe Ġlight Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsw atch Ġ= Ġif Ġ( bitmap . is Dark ()) Ġpalette ?. light V ibr ant Sw atch Ġelse Ġpalette ?. dark V ibr ant Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparse Color Ġ= ĠColor . parse Color ( sw atch . rgb String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Back . setColor Filter ( parse Color , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġconstraint Set Ġ= ĠConstraint Set () ĊĠĠĠĠĠĠĠ Ġconstraint Set . clone ( this , ĠR . layout . activity _ recipe _ details _ final ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtransition Ġ= ĠChange Bounds (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAnt icip ate Over shoot Interpolator ( 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWait Ġfor Ġthe Ġactivity Ġto Ġbe Ġfully Ġvisible Ġand Ġthe Ġshared Ġelement Ġtransition Ġto Ġbe Ġcomplete ĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( root , Ġtransition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ 6 0 0 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Bitmap From Asset ( context : ĠContext , ĠfilePath : ĠString ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Manager Ġ= Ġcontext . assets ĊĊĠĠĠĠĠĠĠ Ġval ĠinputStream : ĠInputStream ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream Ġ= Ġasset Manager . open ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Stream ( inputStream ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" ERROR :", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ