package Ġcom . ang cy o . u iv iew . widget čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroid . graphics .* č Ċ import Ġandroid . support . v 7 . widget . AppCompat ImageView č Ċ import Ġandroid . util . Attribute Set č Ċ import Ġcom . ang cy o . u iv iew . R č Ċ import Ġcom . ang cy o . u iv iew . kotlin . density čĊč Ċ /** čĊ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 , æ·± åľ ³ å¸Ĥ çº¢ é¸ Ł ç½ĳç»ľ ç§ĳ æĬĢ èĤ¡ ä»½ æľī éĻĲ åħ¬åı¸ ĠAll Ġrights Ġreserved . čĊ Ġ* Ġ é¡¹çĽ® åĲįç§° ï¼ļ čĊ Ġ* Ġ ç±»çļĦ æııè¿° ï¼ļ åľĨ å½¢ åĽ¾çīĩ čĊ Ġ* ĠåĪĽå»º äººåĳĺ ï¼ļ Rob i čĊ Ġ* ĠåĪĽå»º æĹ¶éĹ´ ï¼ļ 2 0 1 7 / 0 6 / 0 8 Ġ 1 7 : 4 0 čĊ Ġ* Ġä¿®æĶ¹ äººåĳĺ ï¼ļ Rob i čĊ Ġ* Ġä¿®æĶ¹ æĹ¶éĹ´ ï¼ļ 2 0 1 7 / 0 6 / 0 8 Ġ 1 7 : 4 0 čĊ Ġ* Ġä¿®æĶ¹ å¤ĩ æ³¨ ï¼ļ čĊ Ġ* ĠVersion : Ġ 1 . 0 . 0 čĊ Ġ*/ č Ċ class ĠCircle ImageView ( context : ĠContext , Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĠAppCompat ImageView ( context , Ġattribute Set ) Ġ{ čĊčĊĠĠĠ Ġvar Ġshow Type Ġ= ĠC IR CLE čĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġvar Ġround Radius Ġ= Ġ 0 f čĊčĊĠĠĠ Ġval Ġround Rect F : ĠRect F Ġby Ġlazy Ġ{ čĊĠĠĠĠĠĠĠ ĠRect F () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġvar Ġline Color : ĠInt Ġ= ĠColor . WHITE čĊčĊĠĠĠ Ġ/** 4 ä¸ª è§Ĵ çļĦ åľĨ è§Ĵ ä¿¡æģ¯ */ čĊĠĠĠ Ġval Ġradius : ĠFloat Array čĊĠĠĠĠĠĠĠ Ġget () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfloat ArrayOf ( round Radius , Ġround Radius , Ġround Radius , Ġround Radius , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Radius , Ġround Radius , Ġround Radius , Ġround Radius ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( attribute Set , ĠR . style able . Circle ImageView ) čĊĠĠĠĠĠĠĠ Ġshow Type Ġ= Ġtyped Array . getInt ( R . style able . Circle ImageView _ r _ show _ type , Ġshow Type ) čĊĠĠĠĠĠĠĠ Ġline Color Ġ= Ġtyped Array . getColor ( R . style able . Circle ImageView _ r _ line _ color , Ġline Color ) čĊĠĠĠĠĠĠĠ Ġround Radius Ġ= Ġtyped Array . get Dimension Pixel Offset ( R . style able . Circle ImageView _ r _ round _ radius , Ġ( 1 0 Ġ* Ġdensity ). toInt ()). toFloat () čĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġval Ġclip Path : ĠPath Ġby Ġlazy Ġ{ ĠPath () Ġ} čĊčĊĠĠĠ Ġval Ġpaint : ĠPaint Ġby Ġlazy Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) čĊĠĠĠĠĠĠĠ Ġp . stroke Width Ġ= Ġ 2 Ġ* Ġdensity čĊĠĠĠĠĠĠĠ Ġp . stroke Join Ġ= ĠPaint . Join . ROUND čĊĠĠĠĠĠĠĠ Ġp . stroke Cap Ġ= ĠPaint . Cap . ROUND čĊĠĠĠĠĠĠĠ Ġp . style Ġ= ĠPaint . Style . ST RO KE čĊĠĠĠĠĠĠĠ Ġp čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ čĊĠĠĠĠĠĠĠ Ġwhen Ġ( show Type ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠNORMAL Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ ĠRO UND , ĠC IR CLE Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠMath . min ( meas ured Height Ġ- Ġpadding Top Ġ- Ġpadding Bottom , Ġmeasured Width Ġ- Ġpadding Left Ġ- Ġpadding Right ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcx Ġ= Ġ( padding Left Ġ+ Ġsize Ġ/ Ġ 2 ). toFloat () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcy Ġ= Ġ( padding Top Ġ+ Ġsize Ġ/ Ġ 2 ). toFloat () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcr Ġ= Ġ( size Ġ/ Ġ 2 ). toFloat () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclip Path . reset () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġline Color čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Type Ġ== ĠC IR CLE ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclip Path . add Circle ( cx , Ġcy , Ġcr , ĠPath . Direction . CW ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Rect F . set ( cx Ġ- Ġcr , Ġcy Ġ- Ġcr , Ġcx Ġ+ Ġcr , Ġcy Ġ+ Ġcr ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclip Path . add Round Rect ( round Rect F , Ġradius , ĠPath . Direction . CW ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . clip Path ( clip Path ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// canvas . draw Round Rect ( round Rect F , Ġround Radius , Ġround Radius , Ġpaint ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// canvas . draw Circle ( cx , Ġcy , Ġcr , Ġpaint ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Path ( clip Path , Ġpaint ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNORMAL Ġ= Ġ 0 čĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC IR CLE Ġ= Ġ 1 čĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRO UND Ġ= Ġ 2 čĊĠĠĠ Ġ} č Ċ }