package Ġcom . gue t . flex box . playground . widget Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . Bitmap . Config Ċ import Ġandroid . graphics . Shader . Tile Mode Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Ch oreo grapher Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . did ich ux ing . d ora emon kit . util . UI Utils Ċ Ċ class ĠTransform Root Layout Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmy Matrix Ġ= ĠMatrix () ĊĠĠĠ Ġvar Ġcorner Radius Ġ= ĠUI Utils . dp 2 px ( context , Ġ 1 5 f ) ĊĠĠĠ Ġvar Ġanimation Duration : ĠLong Ġ= Ġ 5 0 0 L ĊĠĠĠ Ġvar Ġoffset : ĠFloat Ġ= ĠUI Utils . dp 2 px ( context , Ġ 3 0 f ). toFloat () ĊĠĠĠ Ġprivate Ġvar Ġbitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġuse Radius : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġval Ġcanvas Ġ= ĠCanvas () ĊĠĠĠ Ġprivate Ġval Ġrect F Ġ= ĠRect F () ĊĠĠĠ Ġprivate Ġval Ġpaint Ġ= ĠPaint ( Paint . FILTER _ BITMAP _ FLAG Ġor ĠPaint . ANTI _ ALIAS _ FLAG Ġor ĠPaint . D IT HER _ FLAG ) ĊĠĠĠ Ġprivate Ġval Ġsrc Ġ= ĠFloat Array ( 8 ) ĊĠĠĠ Ġprivate Ġval Ġdst Ġ= ĠFloat Array ( 8 ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Intercept Touch Event ( ev : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠG lide . get ( context ). bitmap Pool [ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Ġ/ Ġ 2 f ). toInt (), Ġ( height Ġ/ Ġ 2 f ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig . RGB _ 5 6 5 ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠĠĠĠĠ Ġcanvas . set Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠ Ġcanvas . scale ( 0 . 5 f , Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠ Ġdraw ( canvas ) ĊĠĠĠĠĠĠĠ Ġcanvas . set Bitmap ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġshader Ġ= ĠBitmap Shader ( bitmap , ĠTile Mode . CLAMP , ĠTile Mode . CLAMP ) ĊĠĠĠĠĠĠĠ Ġpaint . shader Ġ= Ġshader ĊĠĠĠĠĠĠĠ Ġval Ġmatrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠ Ġmatrix . set Rect To Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRect F ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . width . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . height . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRect F ( 0 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMatrix . Scale To Fit . FILL ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġshader . set Local Matrix ( matrix ) ĊĠĠĠĠĠĠĠ Ġbitmap . prepare To Draw () ĊĠĠĠĠĠĠĠ Ġthis . bitmap Ġ= Ġbitmap ĊĠĠĠĠĠĠĠ ĠCh oreo grapher . getInstance (). post Frame Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ 0 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ 1 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ 2 ] Ġ= Ġwidth . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ 3 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ 4 ] Ġ= Ġwidth . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ 5 ] Ġ= Ġheight . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ 6 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ 7 ] Ġ= Ġheight . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforeground Ġ= ĠColor Drawable ( Color . BLACK ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValue Animator . of Float ( 0 f , Ġ 2 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġit . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( foreground Ġas ĠColor Drawable ). alpha Ġ= Ġ(( 2 5 5 f Ġ/ Ġ 2 f ) Ġ* Ġ( value Ġ/ Ġ 2 f )). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Radius Ġ= Ġ( value Ġ/ Ġ 2 f ) Ġ* Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lt - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 0 ] Ġ= Ġvalue Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lt - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 1 ] Ġ= Ġvalue Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rt - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 2 ] Ġ= Ġwidth Ġ- Ġvalue Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rt - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 3 ] Ġ= Ġvalue Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rb - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 4 ] Ġ= Ġwidth . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rb - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 5 ] Ġ= Ġheight . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lb - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 6 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lb - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 7 ] Ġ= Ġheight . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lt - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 0 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lt - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 1 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rt - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 2 ] Ġ= Ġwidth Ġ- Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rt - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 3 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rb - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 4 ] Ġ= Ġwidth Ġ- Ġvalue Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rb - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 5 ] Ġ= Ġheight Ġ- Ġvalue Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lb - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 6 ] Ġ= Ġvalue Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lb - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 7 ] Ġ= Ġheight Ġ- Ġvalue Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Listener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lt - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 0 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lt - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 1 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rt - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 2 ] Ġ= Ġwidth Ġ- Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rt - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 3 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rb - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 4 ] Ġ= Ġwidth Ġ- Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rb - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 5 ] Ġ= Ġheight Ġ- Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lb - x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 6 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lb - y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 7 ] Ġ= Ġheight Ġ- Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Radius Ġ= Ġcorner Radius . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( foreground Ġas ĠColor Drawable ). alpha Ġ= Ġ 2 5 5 Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠDec el erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġanimation Duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ ĠValue Animator . of Float ( 0 f , Ġ 2 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġit . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( foreground Ġas ĠColor Drawable ). alpha Ġ= Ġ(( 2 5 5 f Ġ/ Ġ 2 f ) Ġ- Ġ( 2 5 5 f Ġ/ Ġ 2 f ) Ġ* Ġ( value Ġ/ Ġ 2 f )). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Radius Ġ= Ġcorner Radius Ġ- Ġ( value Ġ/ Ġ 2 f ) Ġ* Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 0 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 1 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 2 ] Ġ= Ġwidth Ġ- Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 3 ] Ġ= Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 4 ] Ġ= Ġwidth Ġ- Ġ( 1 f Ġ- Ġvalue ) Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 5 ] Ġ= Ġheight Ġ- Ġ( 1 f Ġ- Ġvalue ) Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 6 ] Ġ= Ġ( 1 f Ġ- Ġvalue ) Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 7 ] Ġ= Ġheight Ġ- Ġ( 1 f Ġ- Ġvalue ) Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 0 ] Ġ= Ġ( 1 f Ġ- Ġvalue ) Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 1 ] Ġ= Ġ( 1 f Ġ- Ġvalue ) Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 2 ] Ġ= Ġwidth Ġ- Ġ( 1 f Ġ- Ġvalue ) Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 3 ] Ġ= Ġ( 1 f Ġ- Ġvalue ) Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 4 ] Ġ= Ġwidth . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 5 ] Ġ= Ġheight . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 6 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst [ 7 ] Ġ= Ġheight . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Listener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforeground Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Radius Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ?. let Ġ{ ĠG lide . get ( context ). bitmap Pool . put ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . shader Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠDec el erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġanimation Duration ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpicture Ġ= Ġthis . bitmap ĊĠĠĠĠĠĠĠ Ġif Ġ( picture Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . save () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Color ( Color . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Matrix . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Matrix . set Poly To Poly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc . size Ġshr Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . concat ( my Matrix ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( 0 f , Ġ 0 f , Ġwidth . toFloat (), Ġheight . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . restore () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . dispatch Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }