package Ġcom . ten ext . demo . view čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroid . graphics .* č Ċ import Ġandroid . graphics . drawable . Drawable č Ċ import Ġandroid . graphics . drawable . N ine Patch Drawable č Ċ import Ġandroid . util . Attribute Set čĊč Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView čĊč Ċ /** čĊ Ġ* Ġ åľĨ è§Ĵ ImageView čĊ Ġ*/ č Ċ class ĠRound ImageView Ġ: ĠAppCompat ImageView Ġ{ čĊčĊĠĠĠ Ġprivate Ġvar Ġdefault Radius Ġ= Ġ 0 čĊĠĠĠ Ġprivate Ġvar Ġradius Ġ= Ġ- 1 čĊčĊĠĠĠ Ġprivate Ġval Ġrect F Ġ= ĠRect F () čĊĠĠĠ Ġprivate Ġval Ġr add ii Ġ= Ġfloat ArrayOf ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f ) čĊĠĠĠ Ġprivate Ġval Ġclip Path Ġ= ĠPath () čĊčĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) čĊčĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) čĊčĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( čĊĠĠĠĠĠĠĠ Ġcontext , čĊĠĠĠĠĠĠĠ Ġattrs , čĊĠĠĠĠĠĠĠ Ġdef Style Attr čĊĠĠĠ Ġ) čĊčĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġleft , Ġtop , Ġright , Ġbottom ) čĊĠĠĠĠĠĠĠ Ġdefault Radius Ġ= Ġif Ġ( width Ġ> Ġheight ) Ġheight Ġ/ Ġ 2 Ġelse Ġwidth Ġ/ Ġ 2 čĊĠĠĠĠĠĠĠ Ġif Ġ( radius Ġ== Ġ- 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius Ġ= Ġdefault Radius čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġrect F . set ( 0 f , Ġ 0 f , Ġwidth . toFloat (), Ġheight . toFloat ()) čĊĠĠĠĠĠĠĠ Ġmeasure Path () čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcanvas . clip Path ( clip Path ) čĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset Radius ( radius : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . radius Ġ= Ġ( resources . display Metrics . density Ġ* Ġradius Ġ+ Ġ 0 . 5 ). toInt () čĊĠĠĠĠĠĠĠ Ġmeasure Path () čĊĠĠĠĠĠĠĠ Ġinvalidate () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġmeasure Path () Ġ{ čĊĠĠĠĠĠĠĠ Ġclip Path . reset () čĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 8 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġr add ii [ i ] Ġ= Ġradius . toFloat () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġclip Path . add Round Rect ( rect F , Ġr add ii , ĠPath . Direction . CW ) čĊĠĠĠ Ġ} č Ċ } čĊ