package Ġcom . z . palette . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġcom . z . palette . Bitmap Utils Ċ import Ġcom . z . palette . R ĊĊ Ċ /** Ċ Ġ* ĠTODO : Ġdocument Ġyour Ġcustom Ġview Ġclass . Ċ Ġ*/ Ċ class ĠMy View Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ example String : ĠString ? Ġ= Ġnull Ġ// ĠTODO : Ġuse Ġa Ġdefault Ġfrom ĠR . string ... ĊĠĠĠ Ġprivate Ġvar Ġ_ example Color : ĠInt Ġ= ĠColor . RED Ġ// ĠTODO : Ġuse Ġa Ġdefault Ġfrom ĠR . color ... ĊĠĠĠ Ġprivate Ġvar Ġ_ example Dimension : ĠFloat Ġ= Ġ 0 f Ġ// ĠTODO : Ġuse Ġa Ġdefault Ġfrom ĠR . dim en ... ĊĊĠĠĠ Ġprivate Ġvar Ġtext Paint : ĠText Paint ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtext Width : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġtext Height : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġprivate Ġvar Ġm Palette Colors : ĠArrayList < Int >? Ġ= Ġnull ĊĊĠĠ Ġopen Ġfun Ġset Palette Colors ( palette Colors : ĠArrayList < Int > Ġ? ){ ĊĊĠĠĠĠĠĠĠ Ġthis . m Palette Colors = palette Colors ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġtext Ġto Ġdraw ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexample String : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ example String ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ example String Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Text Paint And Measure ments () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġfont Ġcolor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexample Color : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ example Color ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ example Color Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Text Paint And Measure ments () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIn Ġthe Ġexample Ġview , Ġthis Ġdimension Ġis Ġthe Ġfont Ġsize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexample Dimension : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ example Dimension ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ example Dimension Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Text Paint And Measure ments () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIn Ġthe Ġexample Ġview , Ġthis Ġdrawable Ġis Ġdrawn Ġabove Ġthe Ġtext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexample Drawable : ĠDrawable ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( null , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġdef Style ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( attrs : ĠAttributeSet ?, Ġdef Style : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġattributes ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĠR . style able . My View , Ġdef Style , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġ_ example String Ġ= Ġa . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . My View _ example String ) ĊĠĠĠĠĠĠĠ Ġ_ example Color Ġ= Ġa . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . My View _ example Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexample Color ) ĊĠĠĠĠĠĠĠ Ġ// ĠUse Ġget Dimension Pixel Size Ġor Ġget Dimension Pixel Offset Ġwhen Ġdealing Ġwith ĊĠĠĠĠĠĠĠ Ġ// Ġvalues Ġthat Ġshould Ġfall Ġon Ġpixel Ġboundaries . ĊĠĠĠĠĠĠĠ Ġ_ example Dimension Ġ= Ġa . get Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . My View _ example Dimension , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexample Dimension ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( a . hasValue ( R . style able . My View _ example Drawable )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexample Drawable Ġ= Ġa . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . My View _ example Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexample Drawable ?. callback Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġa Ġdefault ĠText Paint Ġobject ĊĠĠĠĠĠĠĠ Ġtext Paint Ġ= ĠText Paint (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠPaint . ANTI _ ALIAS _ FLAG ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠPaint . Align . LEFT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate ĠText Paint Ġand Ġtext Ġmeasurements Ġfrom Ġattributes ĊĠĠĠĠĠĠĠ Ġinvalidate Text Paint And Measure ments () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinvalidate Text Paint And Measure ments () Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Paint ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . text Size Ġ= Ġexample Dimension ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . color Ġ= Ġexample Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Width Ġ= Ġit . measure Text ( example String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Height Ġ= Ġit . font Metrics . bottom ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠåĪĽå»º çĶ» ç¬Ķ ĊĠĠĠ Ġvar Ġp Ġ= ĠPaint () ĊĠĠĠ Ġval Ġm Radius Ġ= Ġ 1 5 0 F ĊĠĠĠ Ġvar Ġm Center X Ġ= Ġ 2 0 0 F ĊĠĠĠ Ġvar Ġm Center Y Ġ= Ġ 2 0 0 F ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġp . is Anti Alias Ġ= Ġtrue // Ġè®¾ç½® çĶ» ç¬Ķ çļĦ éĶ ¯ é½ ¿ æķĪæŀľ ãĢĤ Ġtrue æĺ¯ åİ» éĻ¤ ï¼Į å¤§å®¶ ä¸Ģ çľĭ æķĪæŀľ å°± æĺİ çĻ½ äºĨ ĊĊĠĠĠĠĠĠĠ Ġp . style Ġ= ĠPaint . Style . ST RO KE ; ĊĠĠĠĠ Ġ// ĠĠ Ġcanvas . draw Circle ( m Center X , Ġm Center Y , Ġm Radius , Ġp )// Ġå¤§ åľĨ ĊĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ( width Ġ- Ġheight Ġ/ Ġ 2 ) Ġ/ Ġ 2 . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġheight Ġ/ Ġ 4 . toFloat () ĊĊĠĠĠĠĠĠĠ Ġval Ġo val Ġ= ĠRect F ( x , Ġy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ- Ġx , Ġheight Ġ- Ġy ) ĊĠĠĠĠĠ Ġ// Ġ ĠRect F ( 1 3 7 . 5 , Ġ 1 3 7 . 5 , Ġ 4 1 2 . 5 , Ġ 4 1 2 . 5 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsize = m Palette Colors !!. size ĊĠĠĠĠĠĠĠ Ġp . stroke Width Ġ= Ġ 3 6 0 F / size // å®½åº¦ ĊĊĊĊ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . demo _ img ) ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Temp Ġ= Ġbitmap . copy ( Bitmap . Config . RGB _ 5 6 5 , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġxx = x + 1 0 ĊĠĠĠĠĠĠĠ Ġvar Ġyy = y + 1 0 ĊĊĠĠĠĠ Ġ// ĠĠ Ġbitmap Temp . width = Ġ( width Ġ- Ġxx * 2 ). toInt () ĊĠĠĠĠĠĠ Ġ// Ġbitmap Temp . height = Ġ( height Ġ- Ġyy * 2 ). toInt () ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Size B mp 2 Ġ= ĠBitmap Utils . resize Bitmap ( bitmap Temp , Ġ( width Ġ- Ġxx * 2 ). toInt (), Ġ( height Ġ- Ġyy * 2 ). toInt ()) ĊĊĠĠĠĠĠĠĠ Ġ// canvas . draw Bitmap ( new Size B mp 2 , Ġwidth . toFloat (), Ġ 0 f , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( new Size B mp 2 , Ġxx , Ġyy , Ġp ) ĊĠĠĠĠĠĠĠ Ġvar Ġstart Angle = 0 f ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġangle : ĠFloat Ġ= Ġi Ġ* Ġ 3 6 0 f / size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" my view "," ----------------- :"+ start Angle ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" my view ", Ġ" ---------------- ii - :$ i ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" my view ", ":" +( angle )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . color Ġ= Ġm Palette Colors ! ![ i - 1 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Arc ( oval , start Angle ,( 3 6 0 f / size ), false , p ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle Ġ+= Ġ( 3 6 0 f / size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ Ċ } Ċ