/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 0 6 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . dok ar . kt spans . spans Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . os . Build Ċ import Ġandroid . text . Layout Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . style . Leading Margin Span Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Int Range Ċ import Ġandroidx . annotation . Px ĊĊ Ċ /** Ċ Ġ* ĠA Ġspan Ġwhich Ġstyles Ġparagraphs Ġas Ġbullet Ġpoints Ġ( res pect ing Ġlayout Ġdirection ). Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠBullet Spans Ġmust Ġbe Ġattached Ġfrom Ġthe Ġfirst Ġcharacter Ġto Ġthe Ġlast Ġcharacter Ġof Ġa Ġsingle Ċ Ġ* Ġparagraph , Ġotherwise Ġthe Ġbullet Ġpoint Ġwill Ġnot Ġbe Ġdisplayed Ġbut Ġthe Ġfirst Ġparagraph Ġencountered Ċ Ġ* Ġwill Ġhave Ġa Ġleading Ġmargin . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠBullet Spans Ġallow Ġconfiguring Ġthe Ġfollowing Ġelements : Ċ Ġ* Ċ Ġ* Ġ Ġ* Ġ** gap Ġwidth ** Ġ- Ġthe Ġdistance , Ġin Ġpixels , Ġbetween Ġthe Ġbullet Ġpoint Ġand Ġthe Ġparagraph . Ċ Ġ* ĠDefault Ġvalue Ġis Ġ 2 px . Ċ Ġ* Ġ Ġ* Ġ** color ** Ġ- Ġthe Ġbullet Ġpoint Ġcolor . ĠBy Ġdefault , Ġthe Ġbullet Ġpoint Ġcolor Ġis Ġ 0 Ġ- Ġno Ġcolor , Ċ Ġ* Ġso Ġit Ġuses Ġthe ĠTextView 's Ġtext Ġcolor . Ċ Ġ* Ġ Ġ* Ġ** bullet Ġradius ** Ġ- Ġthe Ġradius , Ġin Ġpixels , Ġof Ġthe Ġbullet Ġpoint . ĠDefault Ġvalue Ġis Ċ Ġ* Ġ 4 px . Ċ Ġ* Ċ Ġ* ĠFor Ġexample , Ġa ĠBullet Span Ġusing Ġthe Ġdefault Ġvalues Ġcan Ġbe Ġconstructed Ġlike Ġthis : Ċ Ġ* Ġ< pre >` Sp ann able String Ġstring Ġ= Ġnew ĠSp ann able String (" Text Ġwith \ n Bullet Ġpoint "); Ċ Ġ* Ġstring . set Span ( new ĠBullet Span (), Ġ 1 0 , Ġ 2 2 , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ); ` </ pre > Ċ Ġ* Ġ< img Ġsrc ="{ @ doc Root } reference / android / images / text / style / default bullet span . png "></ img > Ċ Ġ* Ġ< figcaption > Bullet Span Ġconstructed Ġwith Ġdefault Ġvalues .</ figcaption > Ċ Ġ* Ċ Ġ* Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠTo Ġconstruct Ġa ĠBullet Span Ġwith Ġa Ġgap Ġwidth Ġof Ġ 4 0 px , Ġgreen Ġbullet Ġpoint Ġand Ġbullet Ġradius Ġof Ċ Ġ* Ġ 2 0 px : Ċ Ġ* Ġ< pre >` Sp ann able String Ġstring Ġ= Ġnew ĠSp ann able String (" Text Ġwith \ n Bullet Ġpoint "); Ċ Ġ* Ġstring . set Span ( new ĠBullet Span ( 4 0 , Ġcolor , Ġ 2 0 ), Ġ 1 0 , Ġ 2 2 , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ); ` </ pre > Ċ Ġ* Ġ< img Ġsrc ="{ @ doc Root } reference / android / images / text / style / custom bullet span . png "></ img > Ċ Ġ* Ġ< figcaption > Custom ized ĠBullet Span .</ figcaption > Ċ Ġ*/ Ċ class ĠBullet Span Ġ: ĠLead ing Margin Span Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġdistance , Ġin Ġpixels , Ġbetween Ġthe Ġbullet Ġpoint Ġand Ġthe Ġparagraph . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġdistance , Ġin Ġpixels , Ġbetween Ġthe Ġbullet Ġpoint Ġand Ġthe Ġparagraph . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Px ĊĠĠĠ Ġval Ġgap Width : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġradius , Ġin Ġpixels , Ġof Ġthe Ġbullet Ġpoint . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġradius , Ġin Ġpixels , Ġof Ġthe Ġbullet Ġpoint . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Px ĊĠĠĠ Ġval Ġbullet Radius : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġbullet Ġpoint Ġcolor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġbullet Ġpoint Ġcolor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġval Ġcolor : ĠInt ĊĠĠĠ Ġprivate Ġval Ġm Want Color : ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ[ Bullet Span ] Ġwith Ġthe Ġdefault Ġvalues . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor () Ġ: Ġthis ( STANDARD _ GAP _ WIDTH , ĠST AND ARD _ COLOR , Ġfalse , ĠST AND ARD _ B UL LET _ RADIUS ) Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ[ Bullet Span ] Ġbased Ġon Ġa Ġgap Ġwidth ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġgap Width Ġthe Ġdistance , Ġin Ġpixels , Ġbetween Ġthe Ġbullet Ġpoint Ġand Ġthe Ġparagraph . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( gap Width : ĠInt ) Ġ: Ġthis ( gap Width , ĠST AND ARD _ COLOR , Ġfalse , ĠST AND ARD _ B UL LET _ RADIUS ) Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ[ Bullet Span ] Ġbased Ġon Ġa Ġgap Ġwidth Ġand Ġa Ġcolor Ġinteger . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġgap Width Ġthe Ġdistance , Ġin Ġpixels , Ġbetween Ġthe Ġbullet Ġpoint Ġand Ġthe Ġparagraph . ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor ĠĠĠ Ġthe Ġbullet Ġpoint Ġcolor , Ġas Ġa Ġcolor Ġinteger ĊĠĠĠĠ Ġ* Ġ@ see Ġandroid . content . res . Resources . getColor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( gap Width : ĠInt , Ġ@ Color Int Ġcolor : ĠInt ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġgap Width , ĊĠĠĠĠĠĠĠ Ġcolor , ĊĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠ ĠST AND ARD _ B UL LET _ RADIUS ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ[ Bullet Span ] Ġbased Ġon Ġa Ġgap Ġwidth Ġand Ġa Ġcolor Ġinteger . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġgap Width ĠĠĠĠ Ġthe Ġdistance , Ġin Ġpixels , Ġbetween Ġthe Ġbullet Ġpoint Ġand Ġthe Ġparagraph . ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor ĠĠĠĠĠĠĠ Ġthe Ġbullet Ġpoint Ġcolor , Ġas Ġa Ġcolor Ġinteger . ĊĠĠĠĠ Ġ* Ġ@ param Ġbullet Radius Ġthe Ġradius Ġof Ġthe Ġbullet Ġpoint , Ġin Ġpixels . ĊĠĠĠĠ Ġ* Ġ@ see Ġandroid . content . res . Resources . getColor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( gap Width : ĠInt , Ġ@ Color Int Ġcolor : ĠInt , Ġ@ Int Range ( from Ġ= Ġ 0 ) Ġbullet Radius : ĠInt ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġgap Width , ĊĠĠĠĠĠĠĠ Ġcolor , ĊĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠ Ġbullet Radius ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġgap Width : ĠInt , Ġ@ Color Int Ġcolor : ĠInt , Ġwant Color : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 ) Ġbullet Radius : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . gap Width Ġ= Ġgap Width ĊĠĠĠĠĠĠĠ Ġthis . bullet Radius Ġ= Ġbullet Radius ĊĠĠĠĠĠĠĠ Ġthis . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġm Want Color Ġ= Ġwant Color ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Leading Margin ( first : ĠBoolean ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 2 Ġ* Ġbullet Radius Ġ+ Ġgap Width ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw Leading Margin ( ĊĠĠĠĠĠĠĠ Ġcanvas : ĠCanvas , Ġpaint : ĠPaint , Ġx : ĠInt , Ġdir : ĠInt , ĊĠĠĠĠĠĠĠ Ġtop : ĠInt , Ġbaseline : ĠInt , Ġbottom : ĠInt , ĊĠĠĠĠĠĠĠ Ġtext : ĠCharSequence , Ġstart : ĠInt , Ġend : ĠInt , ĊĠĠĠĠĠĠĠ Ġfirst : ĠBoolean , Ġlayout : ĠLayout ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(( text Ġas ĠSp anned ). get Span Start ( this ) Ġ== Ġstart ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstyle Ġ= Ġpaint . style ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġold color Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Want Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold color Ġ= Ġpaint . color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ" bottom " Ġposition Ġmight Ġinclude Ġextra Ġspace Ġas Ġa Ġresult Ġof Ġline Ġspacing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġconfiguration . ĠSubtract Ġextra Ġspace Ġin Ġorder Ġto Ġshow Ġbullet Ġin Ġthe Ġvertical ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcenter Ġof Ġcharacters . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġlayout . getLine For Offset ( start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbottom Ġ= Ġbottom Ġ- Ġlayout . getLine Extra ( line ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Position Ġ= Ġ( top Ġ+ Ġbottom ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Position Ġ= Ġ( x Ġ+ Ġdir Ġ* Ġbullet Radius ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( x Position , Ġy Position , Ġbullet Radius . toFloat (), Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Want Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġold color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . style Ġ= Ġstyle ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠBullet Ġis Ġslightly Ġbigger Ġto Ġavoid Ġalias ing Ġartifacts Ġon Ġmd pi Ġdevices . ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠST AND ARD _ B UL LET _ RADIUS Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠST AND ARD _ GAP _ WIDTH Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠST AND ARD _ COLOR Ġ= Ġ 0 ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ object ĠBullet Span Compat Ġ{ ĊĊĠĠĠ Ġfun Ġcreate ( gap Width : ĠInt , Ġcolor : ĠInt , Ġbullet Radius : ĠInt ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . text . style . Bullet Span ( gap Width , Ġcolor , Ġbullet Radius ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBullet Span ( gap Width , Ġcolor , Ġbullet Radius ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }