Paint文字相关

文字相关:显示效果、测量文字尺寸、光标、检查字形


设置显示效果类

setTextSize(float textSize)

简介:设置文字大小

setTypeface(Typeface typeface)

简介:设置字体

字体类型及风格

setFakeBoldText(boolean fakeBoldText)

简介:是否使用伪粗体

伪粗体:通过程序在运行时把文字给「描粗」,而非选用更高 weight 的字体让文字变粗(设置在小字体上效果会非常差)

setStrikeThruText(boolean strikeThruText)

简介:是否加删除线

删除线

setUnderlineText(boolean underlineText)

简介:是否加下划线

下划线

setTextSkewX(float skewX)

简介:设置文字横向错切角度,即倾斜

倾斜

setTextScaleX(float scaleX)

简介:设置文字横向放缩,使文字变胖变瘦

横向缩放

setLetterSpacing(float letterSpacing)

简介:设置字符间距,默认值是 0

 setFontFeatureSettings(String settings)

简介:用 CSS 的 font-feature-settings 的方式来设置文字

setTextAlign(Paint.Align align)

简介:设置文字的对齐方式,三个值:LEFT(默认)、CETNER 、 RIGHT

对齐方式

setTextLocale(Locale locale) / setTextLocales(LocaleList locales)

简介:在不改变系统设置的情况下,直接修改绘制时的 Locale

Locale:地域,即系统里设置的「语言」或「语言区域」

locale

 setHinting(int mode)

简介:设置是否启用字体的 hinting (字体微调)

         (随着手机屏幕的像素密度提高,用不到了)

setElegantTextHeight(boolean elegant)

简介:还原文字高度(对于国外部分语言文字高度被压缩的情况使用)

setSubpixelText(boolean subpixelText)

简介:是否开启次像素级的抗锯齿(更好的抗锯齿效果)

        (随着手机屏幕的像素密度提高,一般抗锯齿就够用了,适用于LED屏幕上)

setLinearText(boolean linearText)

简介:设置是否打开线性文本标识    

在Android中文本的绘制需要使用一个bitmap作为单个字符的缓存,setLinearText (true)表示不需要这样的文本缓存


测量文字尺寸类

float getFontSpacing()

简介:获取推荐的行距(两行文字的 baseline 的距离),系统根据文字的字体和字号自动计算的

注:getFontSpacing结果未按FontMetrics标准值计算,会在两行文字不显得拥挤的前提下缩短行距,提供更好的显示效果

获取行距

FontMetircs getFontMetrics()

简介:获取 Paint 的 FontMetrics

FontMetrics:提供了文字排印方面的数值,Paint 根据当前字体和字号,得出的这些值的推荐值

                       baseline:作为文字显示的基准线

                       ascent / descent:限制普通字符的顶部和底部范围(android中这两个值都是相对于baseline的位移,上负下正)

                       top / bottom:限制所有字形( glyph )的顶部和底部范围(android中这两个值都是相对于baseline的位移,上负下正)

                       leading:行的额外间距(即对于上下相邻的两行,上行的 bottom 线和下行的 top 线的距离)

效果

getTextBounds(String text/char[] text, int start, int end, Rect bounds)

简介:获取文字的显示范围

参数:text:要测量的文字

           start、end:文字的起始和结束位置

           bounds:储文字显示范围的Rect对象

显示范围

float measureText(String text)

简介:测量文字的宽度

占用宽度

注:getTextBounds: 它测量的是文字的显示范围(关键词:显示)

       measureText(): 它测量的是文字绘制时所占用的宽度(关键词:占用)

getTextWidths(String text, float[] widths)

简介:获取字符串中每个字符的宽度,并把结果填入参数 widths

          (等价于对每个字符分别调用measureText)

int breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth)

简介:在给出宽度上限的前提下测量文字的宽度,返回截取的文字个数

参数:measureForwards:文字的测量方向,true 表示由左往右测量

           maxWidth:给出的宽度上限

           measuredWidth 是用于接受数据,截取的文字宽度保存在measuredWidth[0]中

测量范围内文字宽度及个数

光标相关

getRunAdvance(CharSequence text, int start, int end, int contextStart, int contextEnd, boolean isRtl, int offset)

简介:对于一段文字,计算出某个字符处光标的 x 坐标

参数:start、end:文字的起始和结束坐标

           contextStart、contextEnd:上下文的起始和结束坐标

           isRtl:文字的方向

           offset:字数的偏移,即计算第几个字符处的光标

计算光标位置

getOffsetForAdvance(CharSequence text, int start, int end, int contextStart, int contextEnd, boolean isRtl, float advance)

简介:给出一个位置的像素值,计算出文字中最接近这个位置的字符偏移量(即第几个字符最接近这个坐标)

参数:advance:给出的位置的像素值

getOffsetForAdvance() 配合上 getRunAdvance() 一起使用,就可以实现「获取用户点击处的文字坐标」的需求


hasGlyph(String string)

简介:检查指定的字符串中是否是一个单独的字形 (glyph)

效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容