package Ġcom . example . android _ study . ui _ custom . demo . standard . paint _ shader Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġcom . example . android _ study . R Ċ Ċ /** Ċ Ġ* ĠAuthor : create Ġby ĠR hy thm Coder Ċ Ġ* ĠDate : 2 0 2 1 / 2 / 2 8 Ċ Ġ* ĠDescription : Ċ Ġ*/ Ċ class ĠV Shader Look Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Bitmap Ġ= ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . ic _ light _ h aze ) ĊĠĠĠ Ġprivate Ġval Ġm Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġshader Ġ= ĠBitmap Shader ( m Bitmap , ĠShader . Tile Mode . REPEAT , ĠShader . Tile Mode . MIR ROR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm X Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Y Ġ= Ġ 0 f ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm X Ġ= Ġevent . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Y Ġ= Ġevent . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm X Ġ= Ġevent . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Y Ġ= Ġevent . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Touch Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( m X , Ġm Y , Ġ 1 5 0 f , Ġm Paint ) ĊĠĠĠ Ġ} Ċ }