package Ġnet . v rg soft . rounded image view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ Ċ class ĠRo unded ImageView Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠAppCompat ImageView ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtop Left : ĠFloat ĊĠĠĠ Ġprivate Ġval Ġtop Right : ĠFloat ĊĠĠĠ Ġprivate Ġval Ġbottom Right : ĠFloat ĊĠĠĠ Ġprivate Ġval Ġbottom Left : ĠFloat ĊĊĠĠĠ Ġprivate Ġval Ġcorners : ĠFloat ĊĊĠĠĠ Ġprivate Ġvar Ġpath : ĠPath ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĠR . style able . Rounded ImageView , Ġ 0 , Ġdef Style ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtop Left Ġ= Ġa . get Dimension ( R . style able . Rounded ImageView _ riv Top Left , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġtop Right Ġ= Ġa . get Dimension ( R . style able . Rounded ImageView _ riv Top Right , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġbottom Left Ġ= Ġa . get Dimension ( R . style able . Rounded ImageView _ riv Bottom Left , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġbottom Right Ġ= Ġa . get Dimension ( R . style able . Rounded ImageView _ riv Bottom Right , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġcorners Ġ= Ġa . get Dimension ( R . style able . Rounded ImageView _ riv C orners , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġpath Ġ= ĠPath () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpath Ġ= ĠgetPath ( w , Ġh ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpath ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . clip Path ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetPath ( w : ĠInt , Ġh : ĠInt ): ĠPath Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPath () ĊĠĠĠĠĠĠĠ Ġval Ġrad ii Ġ= ĠFloat Array ( 8 ) ĊĊĠĠĠĠĠĠĠ Ġrad ii [ 0 ] Ġ= Ġif Ġ( top Left Ġ== Ġ 0 f ) Ġcorners Ġelse Ġtop Left ĊĠĠĠĠĠĠĠ Ġrad ii [ 1 ] Ġ= Ġif Ġ( top Left Ġ== Ġ 0 f ) Ġcorners Ġelse Ġtop Left ĊĊĠĠĠĠĠĠĠ Ġrad ii [ 2 ] Ġ= Ġif Ġ( top Right Ġ== Ġ 0 f ) Ġcorners Ġelse Ġtop Right ĊĠĠĠĠĠĠĠ Ġrad ii [ 3 ] Ġ= Ġif Ġ( top Right Ġ== Ġ 0 f ) Ġcorners Ġelse Ġtop Right ĊĊĠĠĠĠĠĠĠ Ġrad ii [ 4 ] Ġ= Ġif Ġ( bottom Right Ġ== Ġ 0 f ) Ġcorners Ġelse Ġbottom Right ĊĠĠĠĠĠĠĠ Ġrad ii [ 5 ] Ġ= Ġif Ġ( bottom Right Ġ== Ġ 0 f ) Ġcorners Ġelse Ġbottom Right ĊĊĠĠĠĠĠĠĠ Ġrad ii [ 6 ] Ġ= Ġif Ġ( bottom Left Ġ== Ġ 0 f ) Ġcorners Ġelse Ġbottom Left ĊĠĠĠĠĠĠĠ Ġrad ii [ 7 ] Ġ= Ġif Ġ( bottom Left Ġ== Ġ 0 f ) Ġcorners Ġelse Ġbottom Left ĊĊĠĠĠĠĠĠĠ Ġpath . add Round Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRect F ( 0 f , Ġ 0 f , Ġw . toFloat (), Ġh . toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii , ĠPath . Direction . CW ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpath ĊĠĠĠ Ġ} Ċ }