package Ġcom . tu on bon dol . crop circle layout Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . widget . Relative Layout Ċ Ċ /*** Ċ Ġ* Ċ Ġ* Ġ@ author ĠT U ON ĠB ON DO L Ġon Ġ 8 / 1 2 / 1 7 . Ċ Ġ* Ċ Ġ*/ Ċ Ċ class ĠRo unded Corner Layout Ġ: ĠRelative Layout Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġmask Bitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpaint : ĠPaint ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmask Paint : ĠPaint ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcorner Radius : ĠFloat Ġ= Ġ 0 . toFloat () ĊĊĠĠĠ Ġ/** * ĊĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġnull , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġattrs ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġattrs ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdef Style ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs , Ġdef Style ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġattrs ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdef Style ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= Ġcontext . getResources (). getDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġcorner Radius Ġ= ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 1 0 0 0 f , Ġmetrics ) ĊĊĠĠĠĠĠĠĠ Ġpaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĊĠĠĠĠĠĠĠ Ġmask Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG Ġor ĠPaint . FILTER _ BITMAP _ FLAG ) ĊĠĠĠĠĠĠĠ Ġmask Paint !!. set X fer mode ( Port er D uff X fer mode ( Port er D uff . Mode . CLEAR )) ĊĊĠĠĠĠĠĠĠ Ġset Will Not Draw ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĊĠĠĠĠ Ġ* Ġ@ param Ġcanvas ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoff screen Bitmap Ġ= ĠBitmap . create Bitmap ( canvas . getWidth (), Ġcanvas . getHeight (), ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġoff screen Canvas Ġ= ĠCanvas ( off screen Bitmap ) ĊĊĠĠĠĠĠĠĠ Ġsuper . draw ( off screen Canvas ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( mask Bitmap Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmask Bitmap Ġ= Ġcreate Mask ( canvas . getWidth (), Ġcanvas . getHeight ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoff screen Canvas . draw Bitmap ( mask Bitmap , Ġ 0 f , Ġ 0 f , Ġmask Paint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( off screen Bitmap , Ġ 0 f , Ġ 0 f , Ġpaint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĊĠĠĠĠ Ġ* Ġ@ param Ġwidth ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġheight ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Mask ( width : ĠInt , Ġheight : ĠInt ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmask Ġ= ĠBitmap . create Bitmap ( width , Ġheight , ĠBitmap . Config . ALPHA _ 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( mask ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠĠĠĠĠ Ġpaint . setColor ( Color . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( 0 . 0 f , Ġ 0 . 0 f , Ġwidth . toFloat (), Ġheight . toFloat (), Ġpaint ) ĊĊĠĠĠĠĠĠĠ Ġpaint . set X fer mode ( Port er D uff X fer mode ( Port er D uff . Mode . CLEAR )) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( Rect F ( 0 f , Ġ 0 f , Ġwidth . toFloat (), Ġheight . toFloat ()), Ġcorner Radius , Ġcorner Radius , Ġpaint ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmask ĊĠĠĠ Ġ} Ċ } Ċ