package Ġcom . ren yu . canvas demo . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ Ċ class ĠRound ImageView Ġ: ĠAppCompat ImageView Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpaint Ġby Ġlazy Ġ{ ĠPaint () Ġ} ĊĠĠĠ Ġprivate Ġval Ġrect Ġby Ġlazy Ġ{ ĠRect F () Ġ} ĊĠĠĠ Ġprivate Ġval Ġpath Ġby Ġlazy Ġ{ ĠPath () Ġ} ĊĠĠĠ Ġprivate Ġval Ġm Rad ii Ġby Ġlazy Ġ{ Ġfloat ArrayOf ( 2 5 f , Ġ 2 5 f , Ġ 2 5 f , Ġ 2 5 f , Ġ 2 5 f , Ġ 2 5 f , Ġ 2 5 f , Ġ 2 5 f ) Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( Color . TRANSP ARENT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĠĠĠĠĠĠĠ Ġrect . set ( 0 f , Ġ 0 f , Ġw . toFloat (), Ġh . toFloat ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ éĩį çĤ¹ ĊĠĠĠĠĠĠĠ Ġcanvas . save Layer ( rect , Ġnull , ĠCanvas . ALL _ SAVE _ FLAG ) ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġpaint . reset () ĊĠĠĠĠĠĠĠ Ġpath . reset () ĊĊĠĠĠĠĠĠĠ Ġpaint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġpaint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġpaint . xfer mode Ġ= ĠPort er D uff X fer mode ( Port er D uff . Mode . DST _ IN ) ĊĊĠĠĠĠĠĠĠ Ġpath . add Round Rect ( rect , Ġm Rad ii , ĠPath . Direction . CC W ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Path ( path , Ġpaint ) ĊĊĠĠĠĠĠĠĠ Ġpaint . xfer mode Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġpaint . stroke Width Ġ= Ġ 8 f ĊĠĠĠĠĠĠĠ Ġpaint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġpath . reset () ĊĠĠĠĠĠĠĠ Ġpath . add Round Rect ( rect , Ġm Rad ii , ĠPath . Direction . CC W ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Path ( path , Ġpaint ) ĊĠĠĠ Ġ} Ċ }