package Ġcom . msc . some weather . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġcom . msc . some weather . R Ċ import Ġcom . msc . some weather . http . bean . C ai Y un Weather Ċ import Ġcom . msc . some weather . http . bean . C ai Y un Weather . Result Bean . Daily Bean . Temperature Bean X Ċ import Ġcom . msc . some weather . utilities . Unit Utils Ċ import Ġcom . or h ano but . logger . Logger Ċ Ċ class ĠTemp err ature Linear Chart View Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Fill Paint : ĠPaint ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Text Paint : ĠPaint ĊĊĠĠĠ Ġprivate Ġvar Ġresult : ĠC ai Y un Weather . Result Bean ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt , Ġdef Style Res : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġm Fill Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Fill Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġm Fill Paint . stroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠ Ġm Fill Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Fill Paint . stroke Width Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠ Ġm Fill Paint . color Ġ= ĠContext Compat . getColor ( context , ĠR . color . gray _ cut ting line ) ĊĠĠĠĠĠĠĠ Ġm Fill Paint . stroke Join Ġ= ĠPaint . Join . ROUND ĊĠĠĠĠĠĠĠ Ġm Fill Paint . path Effect Ġ= ĠCor ner Path Effect ( 2 0 0 f ) ĊĠĠĠĠĠĠĠ Ġset Layer Type ( View . LAYER _ TYPE _ SOFTWARE , Ġm Fill Paint ) ĊĊĠĠĠĠĠĠĠ Ġm Text Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Text Paint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġm Text Paint . stroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠ Ġm Text Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Text Paint . stroke Width Ġ= Ġ 2 f ĊĠĠĠĠĠĠĠ Ġm Text Paint . color Ġ= ĠContext Compat . getColor ( context , ĠR . color . black ) ĊĠĠĠĠĠĠĠ Ġm Text Paint . stroke Join Ġ= ĠPaint . Join . MIT ER ĊĠĠĠĠĠĠĠ Ġm Text Paint . text Size Ġ= Ġ 2 8 f ĊĠĠĠĠĠĠĠ Ġset Layer Type ( View . LAYER _ TYPE _ SOFTWARE , Ġm Fill Paint ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Result ( result : ĠC ai Y un Weather . Result Bean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . result Ġ= Ġresult ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result . daily Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . daily !!. temperature Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . daily !!. temperature !!. isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxValue Ġ= Ġresult . daily !!. temperature !!. max By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . max ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Value Ġ= Ġresult . daily !!. temperature !!. min By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . min ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . hourly _ temp err ature _ view _ linear _ bar _ center _ height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Height Ġ= Ġ Ġ( resources . get Dimension Pixel Size ( R . dim en . hourly _ temp err ature _ view _ linear _ bar _ height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġresources . get Dimension Pixel Size ( R . dim en . hourly _ temp err ature _ view _ linear _ bar _ center _ height ))/ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep Ġ= Ġ( max Value !!. max Ġ- Ġmin Value !!. min ) Ġ/ Ġlinear Bar Height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdaily Num Ġ= Ġif Ġ( result Ġ== Ġnull Ġ|| Ġresult !!. daily Ġ== Ġnull Ġ|| Ġresult !!. daily !!. a qi Ġ== Ġnull ) Ġ 0 Ġelse Ġresult !!. daily !!. a qi !!. size ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ( Unit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 ) Ġ* Ġdaily Num ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġmeasure Dimension ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġ// å°Ĩ è®¡ç®Ĺ çļĦ å®½ åĴĮ é«ĺ è®¾ç½® è¿Ľ åİ» ï¼Į ä¿ĿåŃĺ ï¼Į æľĢåĲİ ä¸ĢæŃ¥ ä¸Ģå®ļ è¦ģ æľī ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ!= Ġ 0 Ġ&& Ġheight Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Measured Dimension ( width , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĊĠĠĠĠĠĠĠ ĠLogger . e (" w -- ->$ w ") ĊĠĠĠĠĠĠĠ ĠLogger . e (" h -- ->$ h ") ĊĠĠĠĠĠĠĠ ĠLogger . e (" old w -- ->$ old w ") ĊĠĠĠĠĠĠĠ ĠLogger . e (" old h -- ->$ old h ") ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġmeasure Spec ĠĠ Ġ çĪ¶ æİ§ä»¶ ä¼ł æĿ¥çļĦ width Measure Spec ï¼Į height Measure Spec ĊĠĠĠĠ Ġ* Ġ@ return Ġ Ġ ç»ĵæŀľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmeasure Dimension ( measure Spec : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġspec Mode Ġ= ĠView . Measure Spec . get Mode ( measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġspec Size Ġ= ĠView . Measure Spec . getSize ( measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġ// 1 , layout ä¸Ń èĩªå®ļä¹ī ç»Ħä»¶ ç»Ļ åĩºæĿ¥ ç¡®å®ļ çļĦåĢ¼ ï¼Į æ¯Ķå¦Ĥ 1 0 0 dp ĊĠĠĠĠĠĠĠ Ġ// 2 , layout ä¸Ń èĩªå®ļä¹ī ç»Ħä»¶ ä½¿çĶ¨ çļĦæĺ¯ match _ parent ï¼Į ä½Ĩ çĪ¶ æİ§ä»¶ çļĦ size å·²ç»ı åı¯ä»¥ ç¡®å®ļ äºĨ ï¼Į æ¯Ķå¦Ĥ è®¾ç½® çļĦ åħ·ä½ĵ çļĦåĢ¼ æĪĸèĢħ match _ parent ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġwhen Ġ( spec Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . EX ACT LY Ġ-> Ġspec Size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . AT _ MO ST Ġ-> Ġspec Size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . UNSPECIFIED Ġ-> Ġspec Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġspec Size ĊĠĠĠĠĠĠĠ Ġ}// UNSPECIFIED , æ²¡æľī ä»»ä½ķ éĻĲåĪ¶ ï¼Į æīĢä»¥ åı¯ä»¥ è®¾ç½® ä»»ä½ķ å¤§å°ı ĊĠĠĠĠĠĠĠ Ġ// layout ä¸Ń èĩªå®ļä¹ī ç»Ħä»¶ ä½¿çĶ¨çļĦ wrap _ content ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠ Ġvar ĠmaxValue : ĠTemperature Bean X ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġmin Value : ĠTemperature Bean X ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġstep : ĠDouble Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġlinear Bar Height Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġtext Height Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġmin Path Ġ= ĠPath () ĊĠĠĠĠĠĠĠ Ġval Ġmax Path Ġ= ĠPath () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult !!. daily Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult !!. daily !!. temperature Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult !!. daily !!. temperature !!. isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult !!. daily !!. temperature !!. forEach Indexed Ġ{ Ġindex , Ġtemperature Bean Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Text Ġ= Ġ"${ temperature Bean . max } Â° " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Text Ġ= Ġ"${ temperature Bean . min } Â° " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Rect Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Rect Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint . getText Bounds ( max Text , Ġ 0 , Ġmax Text . length , Ġmax Rect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĸĩæľ¬ çļĦ å®½åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmaxWidth Ġ= Ġmax Rect . width () // æĸĩæľ¬ çļĦ å®½åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĸĩæľ¬ çļĦ é«ĺåº¦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmaxHeight Ġ= Ġmax Rect . height () // æĸĩæľ¬ çļĦ é«ĺåº¦ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint . getText Bounds ( min Text , Ġ 0 , Ġmin Text . length , Ġmin Rect ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĸĩæľ¬ çļĦ å®½åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠminWidth Ġ= Ġmin Rect . width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĸĩæľ¬ çļĦ é«ĺåº¦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠminHeight Ġ= Ġmin Rect . height () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( max Text , Ġindex Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠmaxWidth / 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index ]. max Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- max Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( min Text , Ġindex Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠmaxWidth / 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index ]. min Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ 2 * max Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġresult !!. daily !!. temperature !!. size Ġ- Ġ 1 ) Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( index Ġ== Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Path . moveTo ( index Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index ]. max Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Path . moveTo ( index Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index ]. min Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Path . lineTo (( index Ġ+ Ġ 1 ) Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index Ġ+ Ġ 1 ]. max Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Path . lineTo (( index Ġ+ Ġ 1 ) Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index Ġ+ Ġ 1 ]. min Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index ]. max Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( index Ġ+ Ġ 1 ) Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index Ġ+ Ġ 1 ]. max Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fill Paint ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index ]. min Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( index Ġ+ Ġ 1 ) Ġ* ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 5 f Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠUnit Utils . get And ro iod Screen Property ( context )[ 0 ]. toInt () Ġ/ Ġ 1 0 f , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Bar Height Ġ- Ġ(( result !!. daily !!. temperature ! ![ index Ġ+ Ġ 1 ]. min Ġ- Ġmin Value !!. min ) Ġ/ Ġstep ). toFloat () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ text Height , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fill Paint ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Path ( max Path , Ġm Fill Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Path ( min Path , Ġm Fill Paint ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ