package Ġcom . m 2 mm usic . android . ui . custom Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġcom . m 2 mm usic . android . R Ċ import Ġcom . m 2 mm usic . android . utils . Log Util Ċ import Ġkotlin . math . max Ċ Ċ class ĠCustom Round Angle ImageView Ġ: ĠAppCompat ImageView Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġwidth : ĠFloat Ġ= Ġ 0 . 0 F ĊĠĠĠ Ġprivate Ġvar Ġheight : ĠFloat Ġ= Ġ 0 . 0 F ĊĠĠĠ Ġprivate Ġvar Ġradius : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġdefault Radius Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġleft Top Radius : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġright Top Radius : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġleft Bottom Radius : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġright Bottom Radius : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Re cycle ") ĊĠĠĠ Ġprivate Ġfun Ġinit ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Custom Round Angle ImageView ) ĊĠĠĠĠĠĠĠ Ġradius Ġ= Ġarray . get Dimension Pixel Offset ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Custom Round Angle ImageView _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Radius ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġleft Top Radius Ġ= Ġarray . get Dimension Pixel Offset ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Custom Round Angle ImageView _ left _ top _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Radius ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġright Top Radius Ġ= Ġarray . get Dimension Pixel Offset ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Custom Round Angle ImageView _ right _ top _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Radius ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġleft Bottom Radius Ġ= Ġarray . get Dimension Pixel Offset ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Custom Round Angle ImageView _ left _ bottom _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Radius ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġright Bottom Radius Ġ= Ġarray . get Dimension Pixel Offset ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Custom Round Angle ImageView _ right _ bottom _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Radius ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( default Radius Ġ== Ġleft Top Radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Top Radius Ġ= Ġradius ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( default Radius Ġ== Ġright Top Radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Top Radius Ġ= Ġradius ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( default Radius Ġ== Ġleft Bottom Radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Bottom Radius Ġ= Ġradius ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( default Radius Ġ== Ġright Bottom Radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Bottom Radius Ġ= Ġradius ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġarray . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġleft , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġwidth Ġ= Ġget Width (). toFloat () ĊĠĠĠĠĠĠĠ Ġheight Ġ= Ġget Height (). toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Draw Allocation ") ĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Left Ġ= Ġmax ( left Top Radius , Ġleft Bottom Radius ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Right Ġ= Ġmax ( right Top Radius , Ġright Bottom Radius ) ĊĠĠĠĠĠĠĠ Ġval ĠminWidth Ġ= Ġmax Left Ġ+ Ġmax Right ĊĠĠĠĠĠĠĠ Ġval Ġmax Top Ġ= Ġmax ( left Top Radius , Ġright Bottom Radius ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Bottom Ġ= Ġmax ( left Bottom Radius , Ġright Bottom Radius ) ĊĠĠĠĠĠĠĠ Ġval ĠminHeight Ġ= Ġmax Top Ġ+ Ġmax Bottom ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ>= ĠminWidth Ġ&& Ġheight Ġ>= ĠminHeight ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPath (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To ( left Top Radius . toFloat (), Ġ 0 F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( width . toFloat () Ġ- Ġright Top Radius . toFloat (), Ġ 0 F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquad To ( width , Ġ 0 F , Ġwidth , Ġright Top Radius . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( width , Ġheight Ġ- Ġright Bottom Radius . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquad To ( width , Ġheight , Ġwidth Ġ- Ġright Bottom Radius . toFloat (), Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( left Bottom Radius . toFloat (), Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquad To ( 0 F , Ġheight , Ġ 0 F , Ġheight Ġ- Ġleft Bottom Radius . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( 0 F , Ġleft Top Radius . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquad To ( 0 F , Ġ 0 F , Ġleft Top Radius . toFloat (), Ġ 0 F ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas ?. clip Path ( path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ/* if Ġ( width Ġ>= Ġ 1 2 Ġ&& Ġheight Ġ> Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġ ĠPath (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĽĽ ä¸ª åľĨ è§Ĵ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . moveTo ( 2 4 F , Ġ 0 F ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . lineTo ( width Ġ- Ġ 2 4 , Ġ 0 F ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . quad To ( width , Ġ 0 F , Ġwidth , Ġ 2 4 F ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . lineTo ( width , Ġheight Ġ- Ġ 2 4 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . quad To ( width , Ġheight , Ġwidth Ġ- Ġ 2 4 , Ġheight ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . lineTo ( 2 4 F , Ġheight ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . quad To ( 0 F , Ġheight , Ġ 0 F , Ġheight Ġ- Ġ 2 4 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . lineTo ( 0 F , Ġ 2 4 F ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . quad To ( 0 F , Ġ 0 F , Ġ 2 4 F , Ġ 0 F ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas ?. clip Path ( path ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas );*/ ĊĠĠĠ Ġ} Ċ }