package Ġcom . ele ven etc . building builder Ċ Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ Ċ class ĠLayer Background ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalues : ĠLayer Values , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġinvalidate : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġwidth : ĠInt Ġ= Ġvalues . width ĊĠĠĠ Ġprivate Ġvar Ġheight : ĠInt Ġ= Ġvalues . height ĊĠĠĠ Ġprivate Ġvar Ġwidth Animator : ĠValue Animator Ġ= ĠValue Animator . of Int ( 0 ) ĊĠĠĠ Ġprivate Ġvar Ġheight Animator : ĠValue Animator Ġ= ĠValue Animator . of Int ( 0 ) ĊĊĠĠĠ Ġprivate Ġval Ġfill Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . parse Color ("# 0 0 5 5 aa ") ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstroke Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 1 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Size Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Animator ( width Animator , Ġwidth , Ġvalues . width Ġ* Ġvalues . cell Width ) Ġ{ Ġwidth Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġset Animator ( height Animator , Ġheight , Ġvalues . height Ġ* Ġvalues . cell Height ) Ġ{ Ġheight Ġ= Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwidth Ġ= Ġvalues . width Ġ* Ġvalues . cell Width ĊĠĠĠĠĠĠĠ Ġheight Ġ= Ġvalues . height Ġ* Ġvalues . cell Height ĊĠĠĠĠĠĠĠ Ġdraw ( canvas ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġvalues . center X Ġ- Ġwidth . toFloat () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġvalues . center X Ġ+ Ġwidth . toFloat () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġvalues . bottom Ġ- Ġheight . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġvalues . bottom . toFloat () ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( left , Ġtop , Ġright , Ġbottom , Ġfill Paint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( left , Ġtop , Ġright , Ġbottom , Ġstroke Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Animator ( old Anim : ĠValue Animator , Ġfrom : ĠInt , Ġto : ĠInt , ĠonUpdate : Ġ( value : ĠInt ) Ġ-> ĠUnit ): ĠValue Animator Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( from Ġ== Ġto ) Ġreturn Ġold Anim ĊĊĠĠĠĠĠĠĠ Ġold Anim . cancel () ĊĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator . of Int ( from , Ġto ) ĊĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġ 5 0 0 ĊĊĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate ( it . animated Value Ġas ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠ Ġreturn Ġanim ator ĊĠĠĠ Ġ} Ċ }