package Ġcom . github . i iel se . image viewer . widgets Ċ Ċ import Ġandroid . animation . Argb Evaluator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġcom . github . i iel se . image viewer . utils . Config . DURATION _ BG Ċ Ċ class ĠBackground View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull Ċ ) Ġ: ĠConstraint Layout ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġarg b Evaluator Ġby Ġlazy Ġ{ ĠArg b Evaluator () Ġ} ĊĠĠĠ Ġprivate Ġvar Ġbg Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠ Ġprivate Ġvar Ġanim ator : ĠValue Animator ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġchange To BackgroundColor ( target Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator Ġ= ĠValue Animator . of Float ( 0 f , Ġ 1 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= ĠD URATION _ BG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠDec el erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġbg Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfraction Ġ= Ġit . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate BackgroundColor ( fraction , Ġstart , Ġtarget Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġanim ator ?. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate BackgroundColor ( fraction : ĠFloat , Ġstart Value : ĠInt , Ġend Value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( arg b Evaluator . evaluate ( fraction , Ġstart Value , Ġend Value ) Ġas ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset BackgroundColor ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠ Ġbg Color Ġ= Ġcolor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġanim ator ?. cancel () ĊĠĠĠ Ġ} Ċ }