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:地域,即系统里设置的「语言」或「语言区域」
localesetHinting(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)
效果