package Ġcom . car lit os d roid . view Ċ Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . animation . Linear Interpolator Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġdraw Ġthe Ġgrid Ġover Ġthe Ġdrawable Ġimage Ġin Ġthe Ġclass Ġ{@ link ĠImage Crop per View } Ċ Ġ* Ċ Ġ* Ġ@ author ĠCar los ĠLe on ardo ĠC ami lo ĠV arg as ĠHu am Ã¡n Ġon Ġ 1 0 / 2 2 / 1 7 . Ċ Ġ* Ġ@ see ĠDrawable Ċ Ġ* Ġ@ see ĠDrawable . set Callback Ċ Ġ* Ġ@ see ĠDrawable . invalidate Self Ċ Ġ* Ġ@ see ĠPaint Ċ Ġ* Ġ@ since Ġ 1 . 0 . 0 Ċ Ġ* Ġ@ version Ġ 1 . 0 . 1 Ċ Ġ*/ Ċ Ċ class ĠGrid Drawable Ġ: ĠDrawable () Ġ{ ĊĊĠĠĠ Ġ// ĠClass Ġname Ġfor Ġlog ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠGrid Drawable :: class . java . simple Name ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConfig uring Ġalpha Ġanimation Ġof Ġthe Ġgrid ( 0 - 2 5 5 ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Alpha Ġ= Ġ 1 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLines Ġand Ġborder Ġlines Ġpaint Ġfor Ġdrawing Ġthe Ġgrid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġline Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . GRAY ĊĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 1 F ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġline Border Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . GREEN ĊĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 1 F ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġanim ator Update Listener Ġ= ĠValue Animator . Animator Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠ Ġm Alpha Ġ= Ġanimation ?. animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn imator Ġfor Ġhandling Ġfade Ġin Ġand Ġfade Ġout Ġanimations ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġvalue Animator Ġ= ĠValue Animator (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠ Ġstart Delay Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠ Ġset Float Values ( 1 F , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġadd Update Listener ( anim ator Update Listener ) ĊĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Bounds ( left : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setBounds ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġm Alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġvalue Animator . cancel () ĊĠĠĠĠĠĠĠ Ġvalue Animator . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNe cess arily Ġif Ġwe Ġwant Ġto Ġsee Ġthe Ġgrid Ġdrawn Ġwe Ġneed Ġto Ġcall Ġthis Ġmethod ĊĠĠĠĠ Ġ* Ġand Ġpass Ġthe Ġ{@ link ĠCanvas }. ĊĠĠĠĠ Ġ* ĠDon 't Ġforget Ġthis Ġmethod Ġis Ġnot Ġcalled Ġwhen Ġwe Ġcreate Ġan Ġinstance Ġof Ġthis Ġclass . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġalpha Ġ= ĠMath . round ( m Alpha Ġ* Ġ 2 5 5 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġbounds . width () ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġbounds . height () ĊĊĠĠĠĠĠĠĠ Ġval Ġstart X First Vertical Line Ġ= Ġbounds . left . toFloat () Ġ+ Ġwidth Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġstart X Second Vertical Line Ġ= Ġstart X First Vertical Line Ġ+ Ġwidth Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġstart Y First Horizontal Line Ġ= Ġbounds . top . toFloat () Ġ+ Ġheight Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġstart Y Second Horizontal Line Ġ= Ġstart Y First Horizontal Line Ġ+ Ġheight Ġ/ Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġ// VERTICAL ĊĠĠĠĠĠĠĠ Ġ// Drawing Ġfirst Ġvertical Ġline ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( start X First Vertical Line , Ġbounds . top . toFloat (), Ġstart X First Vertical Line , Ġbounds . bottom . toFloat (), Ġline Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// Drawing Ġborders Ġof Ġthe Ġfirst Ġvertical Ġline ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart X First Vertical Line Ġ- Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ- Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), Ġbounds . top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart X First Vertical Line Ġ- Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ- Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), Ġbounds . bottom . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Border Paint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart X First Vertical Line Ġ+ Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ+ Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), Ġbounds . top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart X First Vertical Line Ġ+ Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ+ Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), Ġbounds . bottom . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Border Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// Drawing Ġsecond Ġvertical Ġline ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( start X Second Vertical Line , Ġbounds . top . toFloat (), Ġstart X Second Vertical Line , Ġbounds . bottom . toFloat (), Ġline Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// Drawing Ġborders Ġof Ġthe Ġsecond Ġvertical Ġline ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart X Second Vertical Line Ġ- Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ- Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), Ġbounds . top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart X Second Vertical Line Ġ- Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ- Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), Ġbounds . bottom . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Border Paint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart X Second Vertical Line Ġ+ Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ+ Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), Ġbounds . top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart X Second Vertical Line Ġ+ Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ+ Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), Ġbounds . bottom . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Border Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// HORIZONTAL ĊĠĠĠĠĠĠĠ Ġ// Drawing Ġfirst Ġhorizontal Ġline ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( bounds . left . toFloat (), Ġstart Y First Horizontal Line , Ġbounds . right . toFloat (), Ġstart Y First Horizontal Line , Ġline Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// Drawing Ġborders Ġof Ġthe Ġfirst Ġhorizontal Ġline ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds . left . toFloat (), Ġstart Y First Horizontal Line Ġ- Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ- Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds . right . toFloat (), Ġstart Y First Horizontal Line Ġ- Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ- Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Border Paint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds . left . toFloat (), Ġstart Y First Horizontal Line Ġ+ Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ+ Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds . right . toFloat (), Ġstart Y First Horizontal Line Ġ+ Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ+ Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Border Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// Drawing Ġsecond Ġhorizontal Ġline ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( bounds . left . toFloat (), Ġstart Y Second Horizontal Line , Ġbounds . right . toFloat (), Ġstart Y Second Horizontal Line , Ġline Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// Drawing Ġborders Ġof Ġthe Ġsecond Ġhorizontal Ġline ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds . left . toFloat (), Ġstart Y Second Horizontal Line Ġ- Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ- Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds . right . toFloat (), Ġstart Y Second Horizontal Line Ġ- Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ- Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Border Paint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds . left . toFloat (), Ġstart Y Second Horizontal Line Ġ+ Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ+ Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds . right . toFloat (), Ġstart Y Second Horizontal Line Ġ+ Ġ( line Paint . stroke Width Ġ/ Ġ 2 ) Ġ+ Ġ( line Border Paint . stroke Width Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Border Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Alpha ( alpha : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġline Paint . alpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠ Ġline Border Paint . alpha Ġ= Ġalpha ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Opacity (): ĠInt Ġ= ĠPixel Format . OP A QUE ĊĊĠĠĠ Ġoverride Ġfun Ġset Color Filter ( color Filter : ĠColor Filter ?) Ġ{ ĊĠĠĠ Ġ} Ċ }