package Ġcom . s het j . di yal bu me . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View ĊĊ Ċ /** Ċ Ġ* Ġ 1 . åĪĿå§ĭåĮĸ Ġ çĶ» ç¬Ķ Ċ Ġ* Ġ 2 . å¦Ĥæŀľ æľī å¸ĥå±Ģ éĻĲåĪ¶ Ċ Ġ* Ġ 3 . on Draw () Ġä¸Ń åľ¨ çĶ» å¸ĥ ä¸Ĭ è¿Ľè¡Į ç»ĺ åĪ¶ Ċ Ġ*/ Ċ class ĠCircle View Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġ// Ġè®¾ç½® çĶ» ç¬Ķ åıĺéĩı ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Paint 1 : ĠPaint ĊĠĠĠ Ġprivate Ġvar Ġm Path : ĠPath ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġ èĩªå®ļä¹ī View æľī åĽĽ ä¸ª æŀĦéĢł åĩ½æķ° ĊĠĠĠ Ġ// Ġå¦Ĥæŀľ View æĺ¯åľ¨ Java ä»£çłģ éĩĮéĿ¢ new çļĦ ï¼Į åĪĻ è°ĥçĶ¨ ç¬¬ä¸Ģä¸ª æŀĦéĢł åĩ½æķ° ĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġåľ¨ æŀĦéĢł åĩ½æķ° éĩĮ åĪĿå§ĭåĮĸ çĶ» ç¬Ķ çļĦ æĵįä½ľ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġå¦Ĥæŀľ View æĺ¯åľ¨ . xml éĩĮ å£°æĺİ çļĦ ï¼Į åĪĻ è°ĥçĶ¨ ç¬¬äºĮ ä¸ª æŀĦéĢł åĩ½æķ° ĊĠĠĠ Ġ// Ġ èĩªå®ļä¹ī å±ŀæĢ§ æĺ¯ ä»İ Attribute Set åıĤæķ° ä¼ł è¿Ľ æĿ¥çļĦ ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ ä¸įä¼ļ èĩªåĬ¨ è°ĥçĶ¨ ĊĠĠĠ Ġ// Ġ ä¸ĢèĪ¬ æĺ¯åľ¨ ç¬¬äºĮ ä¸ª æŀĦéĢł åĩ½æķ° éĩĮ ä¸» åĬ¨ è°ĥçĶ¨ ĊĠĠĠ Ġ// Ġ å¦Ĥ View æľī style å±ŀæĢ§ æĹ¶ ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// API 2 1 ä¹ĭåĲİ æīį ä½¿çĶ¨ ĊĠĠĠ Ġ// Ġ ä¸įä¼ļ èĩªåĬ¨ è°ĥçĶ¨ ĊĠĠĠ Ġ// Ġ ä¸ĢèĪ¬ æĺ¯åľ¨ ç¬¬äºĮ ä¸ª æŀĦéĢł åĩ½æķ° éĩĮ ä¸» åĬ¨ è°ĥçĶ¨ ĊĠĠĠ Ġ// Ġ å¦Ĥ View æľī style å±ŀæĢ§ æĹ¶ ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt , Ġdef Style Res : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ çĶ» ç¬Ķ åĪĿå§ĭåĮĸ ĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠåĪĽå»º çĶ» ç¬Ķ ĊĠĠĠĠĠĠĠ Ġm Paint 1 Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® çĶ» ç¬Ķ é¢ľèī² ä¸º èĵĿ èī² ĊĠĠĠĠĠĠĠ Ġm Paint 1 . color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® çĶ» ç¬Ķ å®½åº¦ ä¸º 1 0 px ĊĠĠĠĠĠĠĠ Ġm Paint 1 . stroke Width Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® çĶ» ç¬Ķ æ¨¡å¼ı ä¸º å¡« åħħ ĊĠĠĠĠĠĠĠ Ġm Paint 1 . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġm Path Ġ= ĠPath () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġ å¤į åĨĻ on Draw () è¿Ľè¡Į ç»ĺ åĪ¶ ĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġ// DI FFER ENCE æĺ¯ ç¬¬ ä¸Ģæ¬¡ ä¸įåĲĮ äºİ ç¬¬äºĮ æ¬¡ çļĦ éĥ¨åĪĨ æĺ¾ç¤º åĩºæĿ¥ A - B ------- ĊĠĠĠĠĠĠĠ Ġ// REPLACE æĺ¯ æĺ¾ç¤º ç¬¬äºĮ æ¬¡ çļĦ B ****** ĊĠĠĠĠĠĠĠ Ġ// RE VERSE _ DI FFER ENCE Ġæĺ¯ ç¬¬äºĮ æ¬¡ ä¸įåĲĮ äºİ ç¬¬ ä¸Ģæ¬¡ çļĦ éĥ¨åĪĨ æĺ¾ç¤º -------- ĊĠĠĠĠĠĠĠ Ġ// INTER SECT äº¤ éĽĨ æĺ¾ç¤º A -( A - B ) ******* ĊĠĠĠĠĠĠĠ Ġ// UNION åħ¨éĥ¨ æĺ¾ç¤º A + B ****** ĊĠĠĠĠĠĠĠ Ġ// XOR è¡¥ éĽĨ Ġ å°±æĺ¯ åħ¨ éĽĨ çļĦ åĩı åİ» äº¤ éĽĨ çĶŁ èĤ² éĥ¨åĪĨ æĺ¾ç¤º -------- ĊĠĠĠĠĠĠĠ Ġcanvas . save () ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠMath . min ( width , Ġheight ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġcanvas . clip Rect ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġm Path !!. add Circle (( width Ġ/ Ġ 2 ). toFloat (), Ġ( height Ġ/ Ġ 2 ). toFloat (), Ġr . toFloat (), ĠPath . Direction . CC W ) ĊĊĠĠĠĠĠĠĠ Ġcanvas . clip Path ( m Path !! ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Color ( Color . BLUE ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġcanvas . restore (); ĊĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġm Paint 1 . setColor ( Color . BLUE ); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġm Paint 1 . setStyle ( Paint . Style . ST RO KE ); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġcanvas . translate ( 1 0 , Ġ 1 0 ); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( 0 , Ġ 0 , Ġ 3 0 0 , Ġ 3 0 0 , Ġm Paint 1 ); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġm Paint 1 . setColor ( Color . RED ); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( 2 0 0 , Ġ 2 0 0 , Ġ 4 0 0 , Ġ 4 0 0 , m Paint 1 ); ĊĠĠĠ Ġ} Ċ Ċ } Ċ