package Ġcom . github . sf yc 2 3 . h encoder practice . view . draw text . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ Ċ class ĠPract ice _ 1 _ 3 _ 1 3 _ GetText Bounds View Ġ: ĠView Ġ{ ĊĠĠĠ Ġcompanion Ġobject ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠPract ice _ 1 _ 3 _ 1 3 _ GetText Bounds View :: class . java . simple Name ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġpaint 1 Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġvar Ġpaint 2 Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġvar Ġtexts Ġ= ĠarrayOf (" A ", Ġ" a ", Ġ" J ", Ġ" j ", Ġ" Ã Ĥ ", Ġ" Ã¢ ") ĊĠĠĠ Ġvar Ġy Offsets Ġ= Ġfloat ArrayOf ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f ) ĊĊĊĠĠĠ Ġvar Ġtop Ġ= Ġ 2 0 0 f ĊĠĠĠ Ġvar Ġbottom Ġ= Ġ 4 0 0 f ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġpaint 1 . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġpaint 1 . stroke Width Ġ= Ġ 2 0 f ĊĠĠĠĠĠĠĠ Ġpaint 1 . color Ġ= ĠColor . parse Color ("# E 9 1 E 6 3 ") ĊĠĠĠĠĠĠĠ Ġpaint 2 . text Size Ġ= Ġ 1 6 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( 5 0 f , Ġtop , Ġwidth Ġ- Ġ 5 0 f , Ġbottom , Ġpaint 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġä½¿çĶ¨ ĠPaint . getText Bounds () Ġ è®¡ç®Ĺ åĩº æĸĩåŃĹ çļĦ æĺ¾ç¤º åĮºåŁŁ ĊĠĠĠĠĠĠĠ Ġ// Ġ çĦ¶åĲİ è®¡ç®Ĺ åĩº æĸĩåŃĹ çļĦ ç»ĺ åĪ¶ ä½įç½® ï¼Į ä»İ èĢĮ è®© æĸĩåŃĹ ä¸Ĭä¸ĭ å±ħ ä¸Ń ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿Ļç§į å±ħ ä¸Ń ç®Ĺæ³ķ çļĦ ä¼ĺ çĤ¹ æĺ¯ ï¼Į åı¯ä»¥ è®© æĸĩåŃĹ ç²¾ åĩĨ åľ° å±ħ ä¸Ń ï¼Į åĪĨ æ¯ « ä¸į å·® ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Bounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġtexts . forEach Indexed Ġ{ Ġi , Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint 2 . getText Bounds ( text , Ġ 0 , Ġtext . length , Ġtext Bounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Offsets [ i ] Ġ= Ġ( text Bounds . top Ġ+ Ġtext Bounds . bottom ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmiddle Ġ= Ġ( top Ġ+ Ġbottom ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġtexts . forEach Indexed Ġ{ Ġi , Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( text , Ġ 1 0 0 f Ġ* Ġ( i Ġ+ Ġ 1 ), Ġmiddle Ġ- Ġy Offsets [ i ], Ġpaint 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }