package Ġcom . b ste ch . wid lib . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Relative Layout Ċ import Ġcom . b ste ch . wid lib . R Ċ import Ġorg . jetbrains . annotations . Nullable Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġbr ays ki y Ġon Ġ 2 / 2 2 / 1 8 . Ċ Ġ*/ Ċ Ċ class ĠNice TextView Ġ: ĠRelative Layout Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġnice Text : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġnice Image : ĠImageView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġtext Stroke Paint Ġ= ĠPaint () ĊĠĠĠ Ġprivate Ġval Ġtext Paint Ġ= ĠPaint () ĊĊĠĠĠ Ġprivate Ġvar Ġtext Size : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠ Ġprivate Ġvar Ġtext Padding : ĠFloat Ġ= Ġ 0 . toFloat () ĊĊĠĠĠ Ġ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 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isIn Edit Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit ( context , Ġattrs , Ġdef Style Attr ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( this . context ). inflate ( R . layout . layout _ nice _ text _ view , Ġthis , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġnice Image Ġ= ĠfindViewById ( R . id . nice _ text _ view _ image ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( attrs Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= ĠgetContext (). obtain Styled Attributes ( attrs , ĠR . style able . N ice TextView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Ġ= Ġtyped Array . get Drawable ( R . style able . N ice TextView _ backgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Background Drawable ( background ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset BackgroundColor ( typed Array . getColor ( R . style able . N ice TextView _ backgroundColor , ĠColor . TRANSP ARENT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġtyped Array . get Dimension Pixel Size ( R . style able . N ice TextView _ android _ text Size , Ġ 1 0 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextColor Ġ= Ġtyped Array . getColor ( R . style able . N ice TextView _ android _ textColor , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Padding Ġ= Ġtyped Array . get Dimension ( R . style able . N ice TextView _ text Padding , Ġ 8 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding ( text Padding . toInt (), Ġtext Padding . toInt (), Ġtext Padding . toInt (), Ġtext Padding . toInt ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= ĠtextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . textAlign Ġ= ĠPaint . Align . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . text Size Ġ= Ġtext Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . type face Ġ= ĠType face . DEFAULT _ BOLD ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Stroke Width Ġ= Ġtyped Array . get Dimension Pixel Size ( R . style able . N ice TextView _ text Stroke Width , Ġ 2 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Stroke Color Ġ= Ġtyped Array . getColor ( R . style able . N ice TextView _ text Stroke Color , ĠColor . BLACK ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Stroke Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Stroke Paint . color Ġ= Ġtext Stroke Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Stroke Paint . textAlign Ġ= ĠPaint . Align . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Stroke Paint . text Size Ġ= Ġtext Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Stroke Paint . type face Ġ= ĠType face . DEFAULT _ BOLD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Stroke Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Stroke Paint . stroke Width Ġ= Ġtext Stroke Width ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnice Text Ġ= Ġtyped Array . getString ( R . style able . N ice TextView _ android _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nice Text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnice Image ?. setImage Bitmap ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Text ( text Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Text ( resources . getString ( text Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Text (@ Nullable Ġtext : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġnice Text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġif Ġ( nice Text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnice Image ?. setImage Bitmap ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( nice Text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Length Ġ= Ġnice Text ?. length Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Bounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . getText Bounds ( nice Text , Ġ 0 , Ġtext Length , Ġtext Bounds ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadding X Ġ= Ġtext Padding . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadding Y Ġ= Ġtext Padding . toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Bounds . width () Ġ+ Ġpadding X , Ġtext Bounds . height () Ġ+ Ġpadding Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext X Ġ= Ġtext Bounds . width () Ġ/ Ġ 2 Ġ+ Ġpadding X Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Y Ġ= Ġtext Bounds . height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( nice Text , Ġtext X . toFloat (), Ġtext Y . toFloat (), Ġtext Stroke Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( nice Text , Ġtext X . toFloat (), Ġtext Y . toFloat (), Ġtext Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnice Image ?. setImage Bitmap ( bitmap ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Background Drawable ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Text Stroke Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Stroke Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġset Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Text Stroke Width ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Stroke Paint . stroke Width Ġ= Ġcolor . toFloat () ĊĠĠĠĠĠĠĠ Ġset Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset TextColor ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġset Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Text Size ( size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Paint . text Size Ġ= Ġsize . toFloat () ĊĠĠĠĠĠĠĠ Ġtext Stroke Paint . text Size Ġ= Ġsize . toFloat () ĊĠĠĠĠĠĠĠ Ġset Text () ĊĠĠĠ Ġ} Ċ } Ċ