package Ġcom . coding . z xm . weather . view Ċ Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Bo unce Interpolator Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġandroidx . annotation . Float Range Ċ import Ġcom . coding . z xm . weather . R Ċ import Ġcom . coding . z xm . weather . util . Weather Util Ċ import Ġcom . q weather . sdk . bean . air . Air Now Bean Ċ import Ġcom . z xm . utils . core . log . M Logger Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠZ hang X in min Ġon Ġ 2 0 2 0 / 7 / 2 6 . Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 / 1 1 / 4 Ġ. ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ ç©º æ°Ķ è´¨ éĩı æĮĩ æķ° Ċ Ġ* Ġ< p > Ċ Ġ* ĠĠĠĠ ĠView Ġ å° º å¯ ¸ æľĢå°ı 1 2 0 dp Ċ Ġ*/ Ċ class ĠA QI View Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġthis ( context , Ġnull , Ġ 0 ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġthis ( context , Ġattrs , Ġ 0 ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Params ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠmContext : ĠContext ĊĊĠĠĠ Ġ// èĥĮæĻ¯ åľĨ å¼ § ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Bg Arc Paint : ĠPaint ĊĠĠĠ Ġprivate Ġvar Ġm Color Bg Arc : ĠInt Ġ= ĠColor . parse Color ("# E DE DED ") ĊĠĠĠ Ġprivate Ġvar Ġm Width Bg Arc : ĠFloat Ġ= Ġ 1 0 . 0 f ĊĊĠĠĠ Ġ// æĮĩ æķ° åľĨ å¼ § ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Indic Arc Paint : ĠPaint ĊĠĠĠ Ġprivate Ġvar Ġm Color Indicator Arc : ĠInt Ġ= ĠColor . WHITE ĊĊĠĠĠ Ġ// æĸĩæľ¬ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Text Paint : ĠPaint ĊĠĠĠ Ġprivate Ġvar Ġm Color Text : ĠInt Ġ= ĠColor . WHITE ĊĠĠĠ Ġprivate Ġvar Ġm Text Size : ĠFloat Ġ= Ġ 2 0 . 0 f ĊĊĠĠĠ Ġ// å° º å¯ ¸ ĊĠĠĠ Ġprivate Ġvar Ġm Default Size : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Default Padding : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġprivate Ġvar Ġm View Width : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġprivate Ġvar Ġm View Height : ĠFloat Ġ= Ġ 0 . 0 f ĊĊĠĠĠ Ġ// AQ I ĊĠĠĠ Ġprivate Ġvar Ġm AQ I Value Height : ĠFloat Ġ= Ġ 0 . 0 f ĊĊĠĠĠ Ġprivate Ġvar Ġm Center X : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Center Y : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Radius : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Rect F : ĠRect F ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm A qi : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġm A qi Value : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġm Category : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġfun Ġinit Params ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĠmContext Ġ= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġattrs ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext ?. obtain Styled Attributes ( attrs , ĠR . style able . Style AQ I View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( typed Array Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// èĥĮæĻ¯ åľĨ å¼ § ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Bg Arc Ġ= Ġtyped Array . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Style AQ I View _ color _ bg _ arc _ line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . parse Color ("# E DE DED ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Width Bg Arc Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . get Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Style AQ I View _ width _ bg _ arc _ line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĮĩ ç¤º åľĨ å¼ § ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Indicator Arc Ġ= Ġtyped Array . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Style AQ I View _ color _ a qi _ arc _ line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĸĩæľ¬ é¢ľèī² ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Style AQ I View _ color _ a qi _ text , ĠColor . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Size Ġ= Ġtyped Array . get Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Style AQ I View _ text size _ a qi _ text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp 2 px ( mContext , Ġ 2 4 f ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// paint ĊĠĠĠĠĠĠĠ Ġm Bg Arc Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠĠĠĠĠ Ġm Bg Arc Paint . color Ġ= Ġm Color Bg Arc ĊĠĠĠĠĠĠĠ Ġm Bg Arc Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġm Bg Arc Paint . stroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠ Ġm Bg Arc Paint . stroke Width Ġ= Ġm Width Bg Arc Ġ/ Ġ 2 . 0 f ĊĊĠĠĠĠĠĠĠ Ġm Indic Arc Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠĠĠĠĠ Ġm Indic Arc Paint . color Ġ= Ġm Color Indicator Arc ĊĠĠĠĠĠĠĠ Ġm Indic Arc Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġm Indic Arc Paint . stroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠ Ġm Indic Arc Paint . stroke Width Ġ= Ġm Width Bg Arc ĊĊĠĠĠĠĠĠĠ Ġm Text Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠĠĠĠĠ Ġm Text Paint . color Ġ= Ġm Color Text ĊĠĠĠĠĠĠĠ Ġm Text Paint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġm Text Paint . text Size Ġ= Ġm Text Size ĊĊĠĠĠĠĠĠĠ Ġ// AQ I Ġvalue ĊĠĠĠĠĠĠĠ Ġval Ġfont Metrics Ġ= Ġm Text Paint . font Metrics ĊĠĠĠĠĠĠĠ Ġm AQ I Value Height Ġ= Ġ( font Metrics . bottom Ġ- Ġfont Metrics . top ) Ġ/ Ġ 2 . 0 f Ġ- Ġfont Metrics . bottom ĊĊĠĠĠĠĠĠĠ Ġm Default Size Ġ= Ġdp 2 px ( mContext , Ġ 1 2 0 f ) ĊĠĠĠĠĠĠĠ Ġm Default Padding Ġ= Ġdp 2 px ( mContext , Ġ 6 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Mode Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġvar Ġheight Mode Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġ// å®½åº¦ ĊĠĠĠĠĠĠĠ Ġm View Width Ġ= Ġif Ġ( width Mode Ġ== ĠMeasure Spec . EX ACT LY ) Ġ{// match _ parent Ġor Ġ åħ·ä½ĵ æķ° åĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . getSize ( width Measure Spec ). toFloat () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{// æĮĩå®ļ å° º å¯ ¸ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Default Size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm View Width Ġ= Ġif Ġ( m View Width Ġ< Ġm Default Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Default Size ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Width ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// é«ĺåº¦ ĊĠĠĠĠĠĠĠ Ġm View Height Ġ= Ġif Ġ( height Mode Ġ== ĠMeasure Spec . EX ACT LY ) Ġ{// match _ parent Ġor Ġ åħ·ä½ĵ æķ° åĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . getSize ( height Measure Spec ). toFloat () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{// æĮĩå®ļ å° º å¯ ¸ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Default Size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm View Height Ġ= Ġif Ġ( m View Height Ġ< Ġm Default Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Default Size ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Height ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Center X Ġ= Ġm View Width Ġ/ Ġ 2 . 0 f ĊĠĠĠĠĠĠĠ Ġm Center Y Ġ= Ġm View Height Ġ/ Ġ 2 . 0 f ĊĊĠĠĠĠĠĠĠ Ġm Radius Ġ= Ġif Ġ( m View Height Ġ> Ġm View Width ) Ġ( m View Width Ġ- Ġm Default Padding Ġ* Ġ 2 ) Ġ/ Ġ 2 . 0 f Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( m View Height Ġ- Ġm Default Padding Ġ* Ġ 2 ) Ġ/ Ġ 2 . 0 f ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Rect F Ġ== Ġnull Ġ&& Ġm Radius Ġ!= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Rect F Ġ= ĠRect F ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center X Ġ- Ġm Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center Y Ġ- Ġm Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center X Ġ+ Ġm Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center Y Ġ+ Ġm Radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ ĠM Logger . d ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" AQ I View ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" on Measure .. width Mode :$ width Mode .. height Mode :$ height Mode .. m View Width :$ m View Width .. m View Height :$ m View Height " Ċ // ĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( m View Width . toInt (), Ġm View Height . toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ å°ģ éĹŃ åľĨ çİ¯ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Bg Arc Paint . color Ġ= Ġm Color Bg Arc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Bg Arc Paint . stroke Width Ġ= Ġm Width Bg Arc Ġ/ Ġ 2 . 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw Circle ( m Center X , Ġm Center Y , Ġm Radius , Ġm Bg Arc Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ æĸĩæľ¬ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( mA qi ) Ġ&& Ġ! TextUtils . isEmpty ( m Category )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ æĮĩ ç¤º åľĨ å¼ § ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Indic Arc Paint . color Ġ= Ġm Color Indicator Arc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Indic Arc Paint . stroke Width Ġ= Ġm Width Bg Arc ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa qi Value Ġ= Ġif Ġ( mA qi Value Ġ>= Ġ 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm A qi Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Rect F ?. let Ġ{ Ġrect F Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw Arc ( rect F , Ġ- 2 4 7 . 5 f , Ġ 3 1 5 f Ġ* Ġa qi Value Ġ/ Ġ 5 0 0 , Ġfalse , Ġm Indic Arc Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ AQ I Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint . text Size Ġ= Ġm Text Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint . color Ġ= Ġm Color Indicator Arc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Width Ġ= Ġm Text Paint . measure Text ( mA qi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm A qi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center X Ġ- Ġcontent Width Ġ/ Ġ 2 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center Y Ġ+ Ġm AQ I Value Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ ĠA QI Ġcategory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint . text Size Ġ= Ġm Text Size Ġ/ Ġ 2 . 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Ġ= Ġif Ġ( m Category . length Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Category . substring ( 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Category ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Width Ġ= Ġm Text Paint . measure Text ( category ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Metrics Ġ= Ġm Text Paint . font Metrics ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( font Metrics . bottom Ġ- Ġfont Metrics . top ) Ġ/ Ġ 2 . 0 f Ġ- Ġfont Metrics . bottom ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center X Ġ- Ġcategory Width Ġ/ Ġ 2 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center Y Ġ+ Ġm Radius Ġ* Ġ 0 . 5 f Ġ+ Ġcategory Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ ĠA QI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint . color Ġ= Ġm Color Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa qi Width Ġ= Ġm Text Paint . measure Text (" AQ I ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AQ I ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center X Ġ- Ġa qi Width Ġ/ Ġ 2 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Center Y Ġ- Ġm AQ I Value Height Ġ- Ġm Default Padding Ġ- Ġcategory Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset AQ IData ( air Now Bean : ĠAir Now Bean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( air Now Bean Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm A qi Ġ= Ġair Now Bean . now . a qi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Category Ġ= Ġair Now Bean . now . category ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( mA qi ) Ġ|| ĠText Utils . isEmpty ( m Category )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Indicator Arc Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . resources . getColor ( Weather Util . get AQ I Color Res ( air Now Bean . now . level )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa qi Animator Ġ= ĠValue Animator . of Int ( mA qi . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa qi Animator . repeat Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa qi Animator . duration Ġ= Ġ 3 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa qi Animator . interpol ator Ġ= ĠDec el erate Interpolator ( mContext , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa qi Animator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm A qi Value Ġ= Ġit . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa qi Animator . start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM Logger . d (" AQ I View ", Ġexception . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠValue Ġof Ġsp Ġto Ġvalue Ġof Ġpx . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġcontext ĊĠĠĠĠ Ġ* Ġ@ param Ġsp Value ĠThe Ġvalue Ġof Ġsp . ĊĠĠĠĠ Ġ* Ġ@ return Ġvalue Ġof Ġpx ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsp 2 px ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġ@ Float Range ( from Ġ= Ġ 0 . 0 ) Ġsp Value : ĠFloat ĊĠĠĠ Ġ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfont Scale Ġ= Ġcontext . resources . display Metrics . scaled Density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( sp Value Ġ* Ġfont Scale Ġ+ Ġ 0 . 5 f ). toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġdp Ġto Ġpx ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdp 2 px ( context : ĠContext , Ġ@ Float Range ( from Ġ= Ġ 0 . 0 ) Ġdp Value : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġcontext . resources . display Metrics . density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( dp Value Ġ* Ġscale Ġ+ Ġ 0 . 5 f ). toFloat () ĊĠĠĠ Ġ} Ċ }