Hencoder学习笔记1-3

HenCoder Android 开发进阶:自定义 View 1-3 文字的绘制

Canvas 绘制文字的方式

drawText()

最基本的绘制文字的方法

drawTextRun()

drawTextOnPath()

沿着一条 Path 来绘制文字。这是一个耍杂技的方法。

StaticLayout

StaticLayout(CharSequence source, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad),其中参数里:

width 是文字区域的宽度,文字到达这个宽度后就会自动换行;
align 是文字的对齐方向;
spacingmult 是行间距的倍数,通常情况下填 1 就好;
spacingadd 是行间距的额外增加值,通常情况下填 0 就好;
includeadd 是指是否在文字上下添加额外的空间,来避免某些过高的字符的绘制出现越界

Paint 对文字绘制的辅助

设置显示效果类

设置文字大小。
设置字体。setTypeface(Typeface typeface)
是否使用伪粗体。setFakeBoldText(boolean fakeBoldText)
是否加删除线。setStrikeThruText(boolean strikeThruText)
是否加下划线。setUnderlineText(boolean underlineText)
设置文字横向错切角度。setTextSkewX(float skewX)
设置文字横向放缩。setTextScaleX(float scaleX)
设置字符间距。setLetterSpacing(float letterSpacing)
用 CSS 的 font-feature-settings 的方式来设置文字。setFontFeatureSettings(String settings)
设置文字的对齐方式。setTextAlign(Paint.Align align)
设置绘制所使用的 Locale。setTextLocale(Locale locale) / setTextLocales(LocaleList locales)
设置是否启用字体的 hinting (字体微调)setHinting(int mode)
设置是否开启文字的 elegant height 。setElegantTextHeight(boolean elegant)
是否开启次像素级的抗锯齿( sub-pixel anti-aliasing )。setSubpixelText(boolean subpixelText)
setLinearText(boolean linearText)

测量文字尺寸类

获取推荐的行距。
float getFontSpacing()
获取 Paint 的 FontMetrics。
FontMetircs getFontMetrics()
获取文字的显示范围。
getTextBounds(String text, int start, int end, Rect bounds)
测量文字的宽度并返回。 float measureText(String text)
获取字符串中每个字符的宽度,并把结果填入参数 widths。getTextWidths(String text, float[] widths)
这个方法也是用来测量文字宽度的。
int breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth)

光标相关

计算出某个字符处光标的 x 坐标。
getRunAdvance(CharSequence text, int start, int end, int contextStart, int contextEnd, boolean isRtl, int offset)
给出一个位置的像素值,计算出文字中最接近这个位置的字符偏移量
getOffsetForAdvance(CharSequence text, int start, int end, int contextStart, int contextEnd, boolean isRtl, float advance)
检查指定的字符串中是否是一个单独的字形 (glyph)hasGlyph(String string)

你可能感兴趣的:(Hencoder学习笔记1-3)