美文网首页
Paint文字相关

Paint文字相关

作者: jadefly | 来源:发表于2018-11-19 17:20 被阅读0次

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


    设置显示效果类

    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)

    效果

    相关文章

      网友评论

          本文标题:Paint文字相关

          本文链接:https://www.haomeiwen.com/subject/lpyyfqtx.html