package Ġme . j ge ek dev . rate progressbar Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ Ċ class ĠRate ProgressBar Ġ: ĠView Ġ{ ĊĠĠĠ Ġ// è¿Ľ åº¦ èĥĮæĻ¯ èī² ĊĠĠĠ Ġprivate Ġvar Ġprogress Bg Color Ġ= Ġ 0 xFFFFFFFF . toInt () ĊĠĠĠ Ġ// è¾¹ æ¡Ĩ é¢ľèī² ĊĠĠĠ Ġprivate Ġvar Ġstroke Color Ġ= Ġ 0 xFF 2 CB AFF . toInt () ĊĠĠĠ Ġ// è¾¹ æ¡Ĩ å®½åº¦ ĊĠĠĠ Ġprivate Ġvar ĠstrokeWidth Ġ= Ġdp 2 px ( 1 f ) ĊĠĠĠ Ġ// è¿Ľ åº¦ é¢ľèī² ĊĠĠĠ Ġprivate Ġvar Ġprogress Color Ġ= Ġ 0 xFF 2 CB AFF . toInt () ĊĠĠĠ Ġ// è¿Ľ åº¦ å¼Ģå§ĭ é¢ľèī² ĊĠĠĠ Ġprivate Ġvar Ġprogress Start Color Ġ= Ġ 0 xFFFF BC 0 0 . toInt () ĊĠĠĠ Ġ// è¿Ľ åº¦ ç»ĵæĿŁ é¢ľèī² ĊĠĠĠ Ġprivate Ġvar Ġprogress End Color Ġ= Ġ 0 xFFFF 9 8 0 0 . toInt () ĊĠĠĠ Ġ// è¿Ľ åº¦ é¢ľèī² æĺ¯åĲ¦ æ¸ Ĳ åıĺ ĊĠĠĠ Ġprivate Ġvar Ġprogress Gradient Ġ= Ġfalse ĊĠĠĠ Ġ// è¿Ľ åº¦ æĺ¯åĲ¦ åľ¨ è¾¹ æ¡Ĩ åĨħ ĊĠĠĠ Ġprivate Ġvar Ġprogress Inside Ġ= Ġfalse ĊĠĠĠ Ġ// æĸĩåŃĹ é¢ľèī² ĊĠĠĠ Ġprivate Ġvar ĠtextColor Ġ= Ġ 0 xFF 2 CB AFF . toInt () ĊĠĠĠ Ġ// è¦ĨçĽĸ åĪ° è¿Ľ åº¦ çļĦ æĸĩåŃĹ é¢ľèī² ĊĠĠĠ Ġprivate Ġvar Ġtext Cover Color Ġ= Ġ 0 xFFFFFFFF . toInt () ĊĠĠĠ Ġ// æĸĩåŃĹ å¤§å°ı ĊĠĠĠ Ġprivate Ġvar Ġtext Size Ġ= Ġsp 2 px ( 1 4 f ) ĊĠĠĠ Ġ// åĪĿå§ĭ æĸĩåŃĹ ĊĠĠĠ Ġprivate Ġvar Ġinit Text Ġ= Ġ" ä¸ĭè½½ " ĊĠĠĠ Ġ// å®ĮæĪĲ æĸĩåŃĹ ĊĠĠĠ Ġprivate Ġvar Ġcomplete Text Ġ= Ġ" ä¸ĭè½½ å®ĮæĪĲ " ĊĠĠĠ Ġ// è¿Ľ åº¦ æľĢå¤§ åĢ¼ ĊĠĠĠ Ġprivate Ġvar Ġmax Ġ= Ġ 1 0 0 ĊĠĠĠ Ġ// å½ĵåīį è¿Ľ åº¦ ĊĠĠĠ Ġprivate Ġvar Ġprogress Ġ= Ġ 0 ĊĠĠĠ Ġ// ä¸º true æĹ¶ è¿Ľ åº¦ ä¸º 0 ä¾Ŀ çĦ¶ æĺ¾ç¤º è¿Ľ åº¦ ĊĠĠĠ Ġprivate Ġvar Ġshow Rate Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpaint : ĠPaint ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbg Rect F : ĠRect F ĊĠĠĠ Ġprivate Ġvar Ġbg Radius Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstroke Rect F : ĠRect F ĊĠĠĠ Ġprivate Ġvar Ġstroke Radius Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprogress Rect F : ĠRect F ĊĠĠĠ Ġprivate Ġvar Ġprogress Radius Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclip Rect F : ĠRect F ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprogress Shader : ĠShader ĊĊĠĠĠ Ġ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 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġta Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Rate ProgressBar ) ĊĠĠĠĠĠĠĠ Ġprogress Bg Color Ġ= Ġta . getColor ( R . style able . Rate ProgressBar _ r pb Progress Bg Color , Ġprogress Bg Color ) ĊĠĠĠĠĠĠĠ Ġstroke Color Ġ= Ġta . getColor ( R . style able . Rate ProgressBar _ r pb Stroke Color , Ġstroke Color ) ĊĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġta . get Dimension Pixel Size ( R . style able . Rate ProgressBar _ r pb Stroke Width , ĠstrokeWidth ) ĊĠĠĠĠĠĠĠ Ġprogress Color Ġ= Ġta . getColor ( R . style able . Rate ProgressBar _ r pb Progress Color , Ġprogress Color ) ĊĠĠĠĠĠĠĠ Ġprogress Start Color Ġ= Ġta . getColor ( R . style able . Rate ProgressBar _ r pb Progress Start Color , Ġprogress Start Color ) ĊĠĠĠĠĠĠĠ Ġprogress End Color Ġ= Ġta . getColor ( R . style able . Rate ProgressBar _ r pb Progress End Color , Ġprogress End Color ) ĊĠĠĠĠĠĠĠ Ġprogress Gradient Ġ= Ġta . getBoolean ( R . style able . Rate ProgressBar _ r pb Progress Gradient , Ġprogress Gradient ) ĊĠĠĠĠĠĠĠ Ġprogress Inside Ġ= Ġta . getBoolean ( R . style able . Rate ProgressBar _ r pb Progress Inside , Ġprogress Inside ) ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġta . getColor ( R . style able . Rate ProgressBar _ r pb TextColor , ĠtextColor ) ĊĠĠĠĠĠĠĠ Ġtext Cover Color Ġ= Ġta . getColor ( R . style able . Rate ProgressBar _ r pb Text Cover Color , Ġtext Cover Color ) ĊĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġta . get Dimension Pixel Size ( R . style able . Rate ProgressBar _ r pb Text Size , Ġtext Size ) ĊĠĠĠĠĠĠĠ Ġinit Text Ġ= Ġta . getString ( R . style able . Rate ProgressBar _ r pb Init Text ) ĊĠĠĠĠĠĠĠ Ġcomplete Text Ġ= Ġta . getString ( R . style able . Rate ProgressBar _ r pb Complete Text ) ĊĠĠĠĠĠĠĠ Ġmax Ġ= Ġta . getInt ( R . style able . Rate ProgressBar _ r pb Max , Ġmax ) ĊĠĠĠĠĠĠĠ Ġprogress Ġ= Ġta . getInt ( R . style able . Rate ProgressBar _ r pb Progress , Ġprogress ) ĊĠĠĠĠĠĠĠ Ġshow Rate Ġ= Ġta . getBoolean ( R . style able . Rate ProgressBar _ r pb Show Rate , Ġshow Rate ) ĊĠĠĠĠĠĠĠ Ġta . recycle () ĊĊĠĠĠĠĠĠĠ Ġpaint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġpaint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġpaint . is D ither Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdw Ġ= Ġdp 2 px ( 1 6 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġdh Ġ= Ġdp 2 px ( 2 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġmeasured Width Ġ= Ġresolve Size And State ( dw , Ġwidth Measure Spec , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġmeasured Height Ġ= Ġresolve Size And State ( dh , Ġheight Measure Spec , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( meas ured Width , Ġmeasured 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 ) ĊĠĠĠĠĠĠĠ Ġbg Rect F Ġ= ĠRect F ( 0 f , Ġ 0 f , Ġw . toFloat (), Ġh . toFloat ()) ĊĠĠĠĠĠĠĠ Ġbg Radius Ġ= Ġh Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġstroke Rect F Ġ= ĠRect F ( stroke Width Ġ/ Ġ 2 f , ĠstrokeWidth Ġ/ Ġ 2 f , Ġw Ġ- ĠstrokeWidth Ġ/ Ġ 2 f , Ġh Ġ- ĠstrokeWidth Ġ/ Ġ 2 f ) ĊĠĠĠĠĠĠĠ Ġstroke Radius Ġ= Ġ( h Ġ- ĠstrokeWidth ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Inside ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Rect F Ġ= ĠRect F ( stroke Width . toFloat (), ĠstrokeWidth . toFloat (), Ġw Ġ- ĠstrokeWidth . toFloat (), Ġh Ġ- ĠstrokeWidth . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Radius Ġ= Ġh Ġ/ Ġ 2 f Ġ- ĠstrokeWidth ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Rect F Ġ= ĠRect F ( 0 f , Ġ 0 f , Ġw . toFloat (), Ġh . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Radius Ġ= Ġh Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġclip Rect F Ġ= ĠRect F ( progress Rect F ) ĊĠĠĠĠĠĠĠ Ġprogress Shader Ġ= ĠLinear Gradient ( progress Rect F . left , Ġprogress Rect F . top , Ġprogress Rect F . right , Ġprogress Rect F . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Start Color , Ġprogress End Color , ĠShader . Tile Mode . CLAMP ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġdraw Bg ( canvas ) ĊĠĠĠĠĠĠĠ Ġdraw Stroke ( canvas ) ĊĠĠĠĠĠĠĠ Ġdraw Progress ( canvas ) ĊĠĠĠĠĠĠĠ Ġdraw Text ( canvas ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Bg ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas ?. save () ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġprogress Bg Color ĊĠĠĠĠĠĠĠ Ġpaint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Round Rect ( bg Rect F , Ġbg Radius , Ġbg Radius , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġcanvas ?. restore () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Stroke ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas ?. save () ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġstroke Color ĊĠĠĠĠĠĠĠ Ġpaint . stroke Width Ġ= ĠstrokeWidth . toFloat () ĊĠĠĠĠĠĠĠ Ġpaint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Round Rect ( stroke Rect F , Ġstroke Radius , Ġstroke Radius , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġcanvas ?. restore () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Progress ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas ?. save () ĊĠĠĠĠĠĠĠ Ġclip Rect F . right Ġ= Ġprogress Rect F . right Ġ* Ġprogress Ġ/ Ġmax ĊĠĠĠĠĠĠĠ Ġcanvas ?. clip Rect ( clip Rect F ) ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Gradient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . shader Ġ= Ġprogress Shader ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġprogress Color ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpaint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Round Rect ( progress Rect F , Ġprogress Radius , Ġprogress Radius , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġcanvas ?. restore () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Text ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsaved Ġ= Ġcanvas ?. save Layer ( null , Ġnull , ĠCanvas . ALL _ SAVE _ FLAG ) ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= ĠtextColor ĊĠĠĠĠĠĠĠ Ġpaint . text Size Ġ= Ġtext Size . toFloat () ĊĠĠĠĠĠĠĠ Ġpaint . textAlign Ġ= ĠPaint . Align . CENTER ĊĠĠĠĠĠĠĠ Ġval Ġfont Metrics Ġ= Ġpaint . font Metrics ĊĠĠĠĠĠĠĠ Ġval Ġbase Line Y Ġ= Ġheight Ġ/ Ġ 2 Ġ+ Ġ(( font Metrics . desc ent Ġ- Ġfont Metrics . as cent ) Ġ/ Ġ 2 Ġ- Ġfont Metrics . desc ent ) ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ== Ġmax ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas ?. draw Text ( complete Text , Ġwidth Ġ/ Ġ 2 f , Ġbase Line Y , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrate Text Ġ= Ġ( progress Ġ* Ġ 1 0 0 Ġ/ Ġmax ). toString () Ġ+ Ġ"% " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas ?. draw Text ( rate Text , Ġwidth Ġ/ Ġ 2 f , Ġbase Line Y , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Rate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas ?. draw Text (" 0 %", Ġwidth Ġ/ Ġ 2 f , Ġbase Line Y , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas ?. draw Text ( init Text , Ġwidth Ġ/ Ġ 2 f , Ġbase Line Y , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġtext Cover Color ĊĠĠĠĠĠĠĠ Ġpaint . xfer mode Ġ= ĠPort er D uff X fer mode ( Port er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Rect ( clip Rect F , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġpaint . xfer mode Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsaved ?. let Ġ{ Ġcanvas . restore To Count ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdp 2 px ( dp Value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdensity Ġ= Ġresources . display Metrics . density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( dp Value Ġ* Ġdensity Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsp 2 px ( sp Value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscaled Density Ġ= Ġresources . display Metrics . scaled Density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( sp Value Ġ* Ġscaled Density Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Max ( max : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . max Ġ= Ġmax ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Progress ( progress : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . progress Ġ= Ġprogress ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Rate ( show Rate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . show Rate Ġ= Ġshow Rate ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} Ċ }