package Ġcom . jer emy . ly m . histogram view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . support . annotation . Color Res Ċ import Ġandroid . support . annotation . String Res Ċ import Ġandroid . text . Layout Ċ import Ġandroid . text . Static Layout Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġjava . text . Decimal Format Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġl ym Ġon Ġ 2 0 1 8 / 8 / 3 0 . Ċ Ġ* ĠGitHub ï¼ļ https :// github . com / J er emy L ee L Ċ Ġ*/ Ċ class ĠHistogram View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: ĠView ( context , Ġattribute Set , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġ/** çĶ» çº¿ */ ĊĠĠĠ Ġprivate Ġval Ġline Paint Ġ= ĠPaint () ĊĠĠĠ Ġ/** çĶ» åĿĲæłĩ è½´ æĸĩåŃĹ */ ĊĠĠĠ Ġprivate Ġval Ġaxis Text Paint Ġ= ĠText Paint () ĊĠĠĠ Ġ/** çĶ» æŁ ± åŃĲ */ ĊĠĠĠ Ġprivate Ġval Ġp ill ars Paint Ġ= ĠPaint () ĊĠĠĠ Ġ/** çĶ» æŁ ± åŃĲ ä¸Ĭ æłĩ æ³¨ æĸĩåŃĹ */ ĊĠĠĠ Ġprivate Ġval Ġp ill ars Text Paint Ġby Ġlazy Ġ{ ĠPaint () Ġ} ĊĊĠĠĠ Ġ/** æŁ ± åŃĲ çļĦ å®½åº¦ */ ĊĠĠĠ Ġprivate Ġvar Ġp ill ars Width Ġ= Ġ 0 f ĊĊĠĠĠ Ġprivate Ġvar Ġstatic Layout : ĠStatic Layout ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** Y åĿĲæłĩ åįķä½į */ ĊĠĠĠ Ġprivate Ġvar Ġunit Ġ= Ġ"" ĊĊĠĠĠ Ġ/** çº µ åĿĲæłĩ åĪ° å·¦ è¾¹ çķĮ çļĦ è·Ŀç¦» */ ĊĠĠĠ Ġprivate Ġvar Ġleft Spacing Ġ= Ġ 1 0 0 f ĊĊĠĠĠ Ġ/** æ¨ ª åĿĲæłĩ åĪ° ä¸ĭ è¾¹ çķĮ çļĦ è·Ŀç¦» */ ĊĠĠĠ Ġprivate Ġvar Ġbottom Spacing Ġ= Ġ 1 0 0 f ĊĊĠĠĠ Ġ/** çº µ åĿĲæłĩ æĢ» éĩı */ ĊĠĠĠ Ġprivate Ġvar Ġvertical Count Ġ= Ġ 1 0 0 ĊĊĠĠĠ Ġ/** çº µ åĿĲæłĩ åįķä½į éĹ´ éļĶ éĩı */ ĊĠĠĠ Ġprivate Ġvar Ġvertical Unit Count Ġ= Ġ 5 ĊĊĠĠĠ Ġ/** çº µ åĿĲæłĩ éķ¿ æ¨ ª çº¿ éĹ´ éļĶ éĩı */ ĊĠĠĠ Ġprivate Ġvar Ġvertical Big Unit Count Ġ= Ġ 2 Ġ* Ġvertical Unit Count ĊĊĠĠĠ Ġ/** çº µ åĿĲæłĩ çŁŃ æ¨ ª çº¿ éķ¿åº¦ */ ĊĠĠĠ Ġprivate Ġval Ġvertical Normal Line Length Ġ= Ġ 1 0 f ĊĊĠĠĠ Ġ/** çº µ åĿĲæłĩ éķ¿ æ¨ ª çº¿ éķ¿åº¦ */ ĊĠĠĠ Ġprivate Ġval Ġvertical Long Line Length Ġ= Ġ 2 0 f ĊĊĠĠĠ Ġ/** çº µ åĿĲæłĩ éĹ´ éļĶ */ ĊĠĠĠ Ġprivate Ġvar Ġvertical Spacing Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** æŁ ± åŃĲ ä¹ĭéĹ´çļĦ éĹ´ è·Ŀ */ ĊĠĠĠ Ġprivate Ġvar Ġhorizontal Spacing Ġ= Ġ 2 0 f ĊĊĠĠĠ Ġ/** åĿĲæłĩ è½´ çļĦ ç² Ĺ ç»Ĩ */ ĊĠĠĠ Ġprivate Ġvar Ġaxis Width Ġ= Ġ 2 f ĊĊĠĠĠ Ġ/** æ¨ ª åĿĲæłĩ åºķ éĥ¨ æłĩ æ³¨ æĸĩåŃĹ éĽĨåĲĪ */ ĊĠĠĠ Ġprivate Ġvar Ġx Axis Strings : ĠArrayList < String >? Ġ= Ġnull ĊĊĠĠĠ Ġ/** åįķ ä¸ª æŁ ± åŃĲ ä»£è¡¨ çļĦ æķ°éĩı éĽĨåĲĪ */ ĊĠĠĠ Ġprivate Ġvar Ġp ill ars Numbers : ĠArrayList < Float >? Ġ= Ġnull ĊĊĠĠĠ Ġ/** æĺ¯åĲ¦ æĺ¾ç¤º æŁ ± åŃĲ ä¸Ĭ æłĩ æ³¨ æĸĩåŃĹ */ ĊĠĠĠ Ġprivate Ġvar Ġshow P ill ars Text Ġ= Ġtrue ĊĊĠĠĠ Ġ// ä¿ĿçķĻ ä¸¤ ä½į å°ı æķ° ĊĠĠĠ Ġprivate Ġval Ġdf Ġ= ĠDecimal Format ("# . 0 0 ") ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Array Ġ= Ġcontext . obtain Styled Attributes ( attribute Set , ĠR . style able . Histogram View , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġunit Ġ= Ġtype Array . getString ( R . style able . Histogram View _ unit ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġaxis Color Ġ= Ġtype Array . getColor ( R . style able . Histogram View _ axis Color , ĠColor . DK GRAY ) ĊĠĠĠĠĠĠĠ Ġval Ġaxis TextColor Ġ= Ġtype Array . getColor ( R . style able . Histogram View _ axis TextColor , ĠColor . DK GRAY ) ĊĠĠĠĠĠĠĠ Ġval Ġp ill ars TextColor Ġ= Ġtype Array . getColor ( R . style able . Histogram View _ pill ars TextColor , ĠColor . DK GRAY ) ĊĠĠĠĠĠĠĠ Ġshow P ill ars Text Ġ= Ġtype Array . getBoolean ( R . style able . Histogram View _ show P ill ars Text , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġaxis Width Ġ= Ġtype Array . get Dimension ( R . style able . Histogram View _ axis Width , Ġ 2 f ) ĊĠĠĠĠĠĠĠ Ġval Ġp ill ars Color Ġ= Ġtype Array . getColor ( R . style able . Histogram View _ pill ars Color , ĠColor . GREEN ) ĊĠĠĠĠĠĠĠ Ġvertical Unit Count Ġ= Ġtype Array . getInteger ( R . style able . Histogram View _ vertical Unit Count , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġvertical Count Ġ= Ġtype Array . getInteger ( R . style able . Histogram View _ vertical Count , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġhorizontal Spacing Ġ= Ġtype Array . get Dimension ( R . style able . Histogram View _ horizontal Spacing , Ġ 2 0 f ) ĊĠĠĠĠĠĠĠ Ġtype Array . recycle () ĊĊĠĠĠĠĠĠĠ Ġvertical Big Unit Count Ġ= Ġ 2 Ġ* Ġvertical Unit Count ĊĊĠĠĠĠĠĠĠ Ġline Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġline Paint . color Ġ= Ġaxis Color ĊĠĠĠĠĠĠĠ Ġline Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġline Paint . stroke Width Ġ= Ġaxis Width ĊĊĠĠĠĠĠĠĠ Ġaxis Text Paint . color Ġ= Ġaxis TextColor ĊĠĠĠĠĠĠĠ Ġaxis Text Paint . textAlign Ġ= ĠPaint . Align . CENTER ĠĠĠ Ġ// è®¾ç½® align ä¸º center ä¹ĭåĲİ æł¹æį® text çļĦ width ç¡®å®ļ start X ç»ĺ åĪ¶ æĸĩåŃĹ width éľĢè¦ģ Ġ/ 2 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( show P ill ars Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp ill ars Text Paint . color Ġ= Ġp ill ars TextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp ill ars Text Paint . textAlign Ġ= ĠPaint . Align . CENTER ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġp ill ars Paint . color Ġ= Ġp ill ars Color ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġif Ġ( xAxis Strings Ġ== Ġnull Ġ|| Ġx Axis Strings !!. isEmpty () Ġ|| Ġp ill ars Numbers Ġ== Ġnull Ġ|| Ġp ill ars Numbers !!. isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġset Param () ĊĠĠĠĠĠĠĠ Ġ// å°Ĩ åĿĲæłĩ åİŁ çĤ¹ ä»İ å·¦ ä¸Ĭ è§Ĵ ç§»åĬ¨ åĪ° å·¦ ä¸ĭ è§Ĵ ĊĠĠĠĠĠĠĠ Ġcanvas . translate ( left Spacing , Ġheight Ġ- Ġbottom Spacing ) ĊĊĠĠĠĠĠĠĠ Ġ// x åĿĲæłĩ ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f Ġ- Ġaxis Width Ġ/ Ġ 2 , Ġ 0 f , Ġwidth Ġ- Ġleft Spacing , Ġ 0 f , Ġline Paint ) ĊĠĠĠĠĠĠĠ Ġ// y åĿĲæłĩ ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġ 0 f Ġ- Ġaxis Width Ġ/ Ġ 2 , Ġ 0 f , Ġ- height Ġ- Ġbottom Spacing , Ġline Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// è®°å½ķ çº µ åĿĲæłĩ æłĩè®° çº¿ çļĦ Y åĿĲæłĩ çļĦåĢ¼ ĊĠĠĠĠĠĠĠ Ġvar Ġstart Y Ġ= Ġvertical Spacing Ġ* Ġvertical Unit Count ĊĠĠĠĠĠĠĠ Ġ// çĶ» çº µ åĿĲæłĩ çļĦ æłĩè®° çº¿ åĴĮ æĸĩåŃĹ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġvertical Unit Count Ġ.. Ġvertical Count Ġ+ Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ% Ġvertical Unit Count Ġ== Ġ 0 Ġ&& Ġi Ġ% Ġvertical Big Unit Count Ġ!= Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f Ġ- Ġaxis Width Ġ/ Ġ 2 , Ġ- start Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ- Ġvertical Normal Line Length Ġ- Ġaxis Width Ġ/ Ġ 2 , Ġ- start Y , Ġline Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Y Ġ+= Ġvertical Spacing Ġ* Ġvertical Unit Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif Ġ( i Ġ% Ġvertical Big Unit Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f Ġ- Ġaxis Width Ġ/ Ġ 2 , Ġ- start Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ- Ġvertical Long Line Length Ġ- Ġaxis Width Ġ/ Ġ 2 , Ġ- start Y , Ġline Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠgetText Bounds ( i . toString (), Ġaxis Text Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( i . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f Ġ- Ġrect . width () Ġ/ Ġ 2 Ġ- Ġ 1 0 Ġ- Ġvertical Long Line Length Ġ- Ġaxis Width Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- start Y Ġ+ Ġrect . height () Ġ/ Ġ 2 , Ġaxis Text Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Y Ġ+= Ġvertical Spacing Ġ* Ġvertical Unit Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( i Ġ== Ġvertical Count Ġ+ Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠgetText Bounds ( unit , Ġaxis Text Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( unit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f Ġ- Ġrect . width () Ġ/ Ġ 2 Ġ- Ġ 1 0 Ġ- Ġvertical Long Line Length Ġ- Ġaxis Width Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- start Y , Ġaxis Text Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// çĶ» æŁ ± åŃĲ ĠåĴĮ æŁ ± åŃĲ ä¸Ĭ ä¸ĭçļĦ æĸĩåŃĹ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġ.. Ġx Axis Strings !!. size ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pill ars Numbers !!. size Ġ< Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æŁ ± åŃĲ çļĦ right çĤ¹ ï¼Ī X åĿĲæłĩ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend X Ġ= Ġ( pill ars Width Ġ+ Ġhorizontal Spacing ) Ġ* Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æŁ ± åŃĲ çļĦ center çĤ¹ ï¼Ī x åĿĲæłĩ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcenter X Ġ= Ġend X Ġ- Ġp ill ars Width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æŁ ± åŃĲ çļĦ top çĤ¹ ï¼Ī Y åĿĲæłĩ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp ill ars Y Ġ= Ġ- pill ars Numbers ! ![ i Ġ- Ġ 1 ] Ġ* Ġvertical Spacing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show P ill ars Text ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ æŁ ± åŃĲ ä¸Ĭ æłĩ æ³¨ æĸĩåŃĹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġp ill ars Numbers ! ![ i Ġ- Ġ 1 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġneed Format Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . contains (". ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext . substring ( text . indexOf (".") Ġ+ Ġ 1 , Ġtext . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneed Format Ġ= Ġtext . length Ġ> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġif Ġ( need Format ) Ġ( df . format ( pill ars Numbers ! ![ i Ġ- Ġ 1 ])). toString () Ġelse Ġ( pill ars Numbers ! ![ i Ġ- Ġ 1 ]). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( text , Ġcenter X , Ġp ill ars Y Ġ- Ġrect . height () Ġ/ Ġ 2 , Ġp ill ars Text Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ æŁ ± åŃĲ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( end X Ġ- Ġp ill ars Width , Ġp ill ars Y , Ġend X , Ġ- axis Width Ġ/ Ġ 2 , Ġp ill ars Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġx Axis Strings ! ![ i Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . save () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . translate ( center X , Ġ 0 f Ġ+ Ġaxis Width Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( static Layout Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ X è½´ æłĩ æ³¨ æĸĩåŃĹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Layout Ġ= ĠStatic Layout ( str , Ġaxis Text Paint , Ġp ill ars Width . toInt () Ġ+ Ġhorizontal Spacing . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayout . Alignment . ALIGN _ NORMAL , Ġ 1 f , Ġ 1 f , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Layout ?. draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Layout Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . restore () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġrect Ġby Ġlazy Ġ{ Rect ()} ĊĠĠĠ Ġprivate Ġfun ĠgetText Bounds ( str : ĠString , Ġpaint : ĠPaint ): ĠRect { ĊĠĠĠĠĠĠĠ Ġpaint . getText Bounds ( str , Ġ 0 , Ġstr . length , Ġrect ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** åıĤæķ° è®¾ç½® */ ĊĠĠĠ Ġprivate Ġfun Ġset Param (){ ĊĠĠĠĠĠĠĠ Ġval Ġtext Size Ġ= Ġwidth Ġ/ Ġ 3 5 f ĊĠĠĠĠĠĠĠ Ġif Ġ( show P ill ars Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp ill ars Text Paint . text Size Ġ= Ġtext Size ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® å®Į æĸĩåŃĹ size ä¹ĭåĲİ æµĭ éĩı æĸĩåŃĹ çļĦ è§Ħ æł¼ ï¼Ī åĮħåĲ« å®½ é«ĺ çŃī ä¿¡æģ¯ çļĦ rect ï¼ī ĊĠĠĠĠĠĠĠ Ġaxis Text Paint . text Size Ġ= Ġtext Size ĊĠĠĠĠĠĠĠ Ġval Ġunit Width Ġ= ĠgetText Bounds ( unit , Ġaxis Text Paint ). width () ĊĠĠĠĠĠĠĠ Ġval Ġcount Width Ġ= ĠgetText Bounds ( vertical Count . toString (), Ġaxis Text Paint ). width () ĊĠĠĠĠĠĠĠ Ġval Ġleft Text Width Ġ= ĠMath . max ( unit Width , Ġcount Width ) ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® åĿĲæłĩ è½´ åĪ° å·¦ ä¾§ è¾¹ çķĮ éĹ´ è·Ŀ ĊĠĠĠĠĠĠĠ Ġleft Spacing Ġ= Ġleft Text Width Ġ+ Ġvertical Long Line Length Ġ+ Ġaxis Width Ġ/ Ġ 2 Ġ+ Ġ 3 0 ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® åĿĲæłĩ è½´ åĪ° ä¸ĭ è¾¹ çķĮ éĹ´ è·Ŀ ĊĠĠĠĠĠĠĠ Ġbottom Spacing Ġ= Ġrect . height () Ġ* Ġ 3 Ġ+ Ġ 2 0 f ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® æŁ ± åŃĲ çļĦ å®½åº¦ ( æŁ ± åŃĲ çļĦ å®½åº¦ è®¡ç®Ĺ ä¾Ŀ æį® æĺ¯ width ï¼Į å¦Ĥæŀľ æŁ ± åŃĲ æķ°éĩı å¤ª å°ĳ ï¼Ī æŃ¤ å¤Ħ æĺ¯ å°ĳ äºİ 7 ä¸ª ï¼īï¼Į éľĢè¦ģ å¯¹ æŁ ± åŃĲ å®½åº¦ è®¾ç½® ä¸Ģä¸ª é»ĺè®¤ åĢ¼ ) ĊĠĠĠĠĠĠĠ Ġval Ġp ill ars Count Ġ= Ġif Ġ( xAxis Strings !!. size Ġ< Ġ 7 ) Ġ 7 Ġelse Ġx Axis Strings !!. size ĊĠĠĠĠĠĠĠ Ġp ill ars Width Ġ= Ġ( width Ġ- Ġleft Spacing Ġ- Ġhorizontal Spacing ) Ġ/ Ġp ill ars Count Ġ- Ġhorizontal Spacing ĊĊĠĠĠĠĠĠĠ Ġvertical Spacing Ġ= Ġ( height Ġ- Ġbottom Spacing Ġ- Ġrect . height () Ġ* Ġ 4 ) Ġ/ Ġvertical Count ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġvar Ġsize Width Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġvar Ġsize Height Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġmode With Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġmode Height Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġ// ä¸º å½ĵåīį æİ§ä»¶ è®¾ç½® é»ĺè®¤ å®½ é«ĺ ĊĠĠĠĠĠĠĠ Ġif Ġ( mode With Ġ!= ĠMeasure Spec . EX ACT LY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Width Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Height Ġ!= ĠMeasure Spec . EX ACT LY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Height Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( size Width , Ġsize Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** åĿĲæłĩ è½´ é¢ľèī² */ ĊĠĠĠ Ġfun Ġset Axis Line Color (@ Color Res Ġcolor Res : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġcontext . resources . getColor ( color Res ) ĊĠĠĠĠĠĠĠ Ġline Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset Axis Line Color ( color Str : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠColor . parse Color ( color Str ) ĊĠĠĠĠĠĠĠ Ġline Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® æĸĩåŃĹ é¢ľèī² */ ĊĠĠĠ Ġfun Ġset TextColor (@ Color Res Ġcolor Res : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġcontext . resources . getColor ( color Res ) ĊĠĠĠĠĠĠĠ Ġaxis Text Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset TextColor ( color Str : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠColor . parse Color ( color Str ) ĊĠĠĠĠĠĠĠ Ġaxis Text Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® åĿĲæłĩ è½´ ç² Ĺ ç»Ĩ */ ĊĠĠĠ Ġfun Ġset As ix Width ( axis Width : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġthis . axis Width Ġ= Ġaxis Width . toFloat () ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® æŁ ± åŃĲ çļĦ é¢ľèī² */ ĊĠĠĠ Ġfun Ġset P ill ars Color (@ Color Res Ġcolor Res : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġcontext . resources . getColor ( color Res ) ĊĠĠĠĠĠĠĠ Ġp ill ars Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset P ill ars Color ( color Str : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠColor . parse Color ( color Str ) ĊĠĠĠĠĠĠĠ Ġp ill ars Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® åįķä½į éĹ´ éļĶ éĩı */ ĊĠĠĠ Ġfun Ġset Vertical Unit Count ( count : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġvertical Unit Count Ġ= Ġcount ĊĠĠĠĠĠĠĠ Ġvertical Big Unit Count Ġ= Ġ 2 Ġ* Ġvertical Unit Count ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® æĢ» éĩı */ ĊĠĠĠ Ġfun Ġset Vertical Count ( vertical Count : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġthis . vertical Count Ġ= Ġvertical Count ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® æŁ ± åŃĲ ä¹ĭéĹ´çļĦ éĹ´ è·Ŀ */ ĊĠĠĠ Ġfun Ġset Horizontal Spacing ( horizontal Spacing : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġthis . horizontal Spacing Ġ= Ġhorizontal Spacing . toFloat () ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® æ¨ ª åĿĲæłĩ æłĩè®° æĸĩåŃĹ éĽĨåĲĪ */ ĊĠĠĠ Ġfun Ġset X Axis Strings ( xAxis Strings : ĠArrayList < String > ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . xAxis Strings Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . xAxis Strings Ġ= Ġx Axis Strings ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . xAxis Strings ?. clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . xAxis Strings ?. addAll ( xAxis Strings ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® æŁ ± åŃĲ çļĦ æķ°éĩı éĽĨåĲĪ */ ĊĠĠĠ Ġfun Ġset P ill ars Numbers ( pill ars Numbers : ĠArrayList < Float > ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . pill ars Numbers Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pill ars Numbers Ġ= Ġp ill ars Numbers ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pill ars Numbers ?. clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pill ars Numbers ?. addAll ( pill ars Numbers ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® åįķä½į */ ĊĠĠĠ Ġfun Ġset Unit ( unit Str : ĠString ? ){ ĊĠĠĠĠĠĠĠ Ġthis . unit Ġ= Ġunit Str Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset Unit (@ String Res Ġunit Str Id : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġthis . unit Ġ= Ġcontext . getString ( unit Str Id ) Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® æĺ¯åĲ¦ æĺ¾ç¤º æŁ ± åŃĲ ä¸Ĭ æłĩ æ³¨ æĸĩåŃĹ */ ĊĠĠĠ Ġfun ĠsetShow P ill ars Text ( show P ill ars Text : ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġthis . show P ill ars Text Ġ= Ġshow P ill ars Text ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** è®¾ç½® æŁ ± åŃĲ ä¸Ĭ æłĩ æ³¨ æĸĩåŃĹ é¢ľèī² */ ĊĠĠĠ Ġfun Ġset P ill ars TextColor (@ Color Res Ġcolor Res : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġp ill ars Text Paint . color Ġ= Ġcontext . resources . getColor ( color Res ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset P ill ars TextColor ( color Str : ĠString ){ ĊĠĠĠĠĠĠĠ Ġp ill ars Text Paint . color Ġ= ĠColor . parse Color ( color Str ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} Ċ }