package Ġcom . bill board . movies . ui . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġcom . bill board . movies . R Ċ import Ġcom . bill board . movies . utils . extensions . px Ċ import Ġjava . lang . Math . ceil Ċ Ċ class ĠPop ularity View Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġvar Ġstroke Ġ= Ġ 5 f . px ĊĠĠĠ Ġvar Ġpadding Ġ= Ġ 3 f . px ĊĠĠĠ Ġvar Ġlow Pop ularity color Ġ= ĠColor . RED ĊĠĠĠ Ġvar Ġmedium Pop ularity Color Ġ= ĠColor . YELLOW ĊĠĠĠ Ġvar Ġh ight Pop ularity Color Ġ= ĠColor . GREEN ĊĠĠĠ Ġvar Ġinner BackgroundColor Ġ= ĠColor . BLACK ĊĠĠĠ Ġvar Ġtext Size Ġ= Ġsp To Px ( 1 3 f , Ġcontext ). toFloat () ĊĠĠĠ Ġvar ĠtextColor Ġ= ĠColor . WHITE ĊĠĠĠ Ġvar Ġpop ularity Color Ġ= ĠColor . RED ĊĠĠĠ Ġvar Ġpercentage Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop ularity Color Ġ= Ġwhen Ġ( percentage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 0 .. 3 0 Ġ-> Ġlow Pop ularity color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 3 0 .. 6 9 Ġ-> Ġmedium Pop ularity Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġh ight Pop ularity Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġarc Ġ= ĠRect F () ĊĊĠĠĠ Ġprivate Ġval Ġm Background Paint Ġ= ĠPaint ( Paint . FILTER _ BITMAP _ FLAG Ġor ĠPaint . D IT HER _ FLAG Ġor ĠPaint . ANTI _ ALIAS _ FLAG ) ĊĊĠĠĠ Ġprivate Ġval Ġm Paint Ġ= ĠPaint ( Paint . FILTER _ BITMAP _ FLAG Ġor ĠPaint . D IT HER _ FLAG Ġor ĠPaint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġstroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Text Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠPaint . Align . CENTER ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġthis ( context , Ġnull ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġthis ( context , Ġattrs , Ġ 0 ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . theme . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Pop ularity View , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpercentage Ġ= Ġget Int ( R . style able . Pop ularity View _ percentage , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= Ġget Dimension ( R . style able . Pop ularity View _ stroke , Ġstroke ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= Ġget Dimension ( R . style able . Pop ularity View _ padding , Ġpadding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow Pop ularity color Ġ= Ġget Color ( R . style able . Pop ularity View _ low Pop ularity color , Ġlow Pop ularity color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedium Pop ularity Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Color ( R . style able . Pop ularity View _ medium Pop ularity Color , Ġmedium Pop ularity Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ight Pop ularity Color Ġ= Ġget Color ( R . style able . Pop ularity View _ h ight Pop ularity Color , Ġh ight Pop ularity Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinner BackgroundColor Ġ= Ġget Color ( R . style able . Pop ularity View _ inner BackgroundColor , Ġinner BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġget Dimension ( R . style able . Pop ularity View _ text Size , Ġtext Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġget Color ( R . style able . Pop ularity View _ textColor , ĠtextColor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġm Paint . stroke Width Ġ= Ġstroke ĊĊĠĠĠĠĠĠĠ Ġarc . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( stroke Ġ/ Ġ 2 Ġ+ Ġpadding ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( stroke Ġ/ Ġ 2 Ġ+ Ġpadding ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Ġ- Ġpadding Ġ- Ġstroke Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Ġ- Ġpadding Ġ- Ġstroke Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// draw Ġbackground ĊĠĠĠĠĠĠĠ Ġm Background Paint . color Ġ= Ġinner BackgroundColor ĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( width Ġ/ Ġ 2 f , Ġheight Ġ/ Ġ 2 f , Ġwidth Ġ/ Ġ 2 f , Ġm Background Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// First Ġdraw Ġfull Ġarc Ġas Ġbackground . ĊĠĠĠĠĠĠĠ Ġm Paint . color Ġ= ĠColor Utils . set Alpha Component ( pop ularity Color , Ġ 7 5 ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Arc ( arc , Ġ- 9 0 f , Ġ 3 6 0 f , Ġfalse , Ġm Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// Then Ġdraw Ġarc Ġprogress Ġwith Ġactual Ġvalue . ĊĠĠĠĠĠĠĠ Ġm Paint . color Ġ= Ġpop ularity Color ĊĠĠĠĠĠĠĠ Ġcanvas . draw Arc ( arc , Ġ- 9 0 f , Ġpercentage . toFloat () Ġ* Ġ 3 . 6 f , Ġfalse , Ġm Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// Draw Ġtext Ġvalue . ĊĠĠĠĠĠĠĠ Ġm Text Paint . text Size Ġ= Ġwhen Ġ( percentage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 0 .. 9 9 Ġ-> Ġtext Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġceil (( text Size Ġ* Ġ 0 . 8 f ). toDouble ()). toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Text Paint . color Ġ= ĠtextColor ĊĠĠĠĠĠĠĠ Ġcanvas . draw Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpercentage . toString () Ġ+ Ġ"% ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Ġ- Ġm Text Paint . as cent ()) Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Paint ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsp To Px ( sp : ĠFloat , Ġcontext : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ SP , Ġsp , Ġcontext . resources . display Metrics ). toInt () ĊĠĠĠ Ġ} Ċ }