自定义 View - 文字

自定义 View -文字

本文记录自定义View-绘制文字相关 API 的使用。

文字绘制方法

直接通过 Canvas 内置 drawText() 绘制文字。

文字测量

文字测量有两种方法。

  • 调用 Paint.getTextBounds(String text, int start, int end, Rect bounds) 方法,测量结果存放在 bounds 对象中,对应文字的上下左右边界。

  • 调用 Paint.getFontMetrics() ,返回 FontMetrics 对象。

image-20210815223036212.png

FontMetrics 中有五条文字的基准线,依次为:

image-20210815223517086.png
  • top-line: 可绘制区域最顶部的线
  • ascent-line: 可绘制区域顶部的线,系统推荐的顶部位置,
  • baseline: 文字绘制的基线(在四线格上书写英文字母时的第三条线)
  • descent-line: 可绘制区域底部的线,系统推荐的底部位置
  • bottom-line: 可绘制区域最底部的线

对应 FontMetrics 中五个属性值

  • top = Y(top-line) - Y(baseline)

  • ascent = Y(ascent-line) - Y(baseline)

  • descent = Y(descent-line) - Y(baseline)

  • bottom = Y(bottom-line) - Y(baseline)

  • leading是系统推荐的行间隔。

  • Paint.getTextBounds 通常用于静态文字的测量,而 Paint.getFontMetrics() 通常用于动态文字测量。

文字换行

文字换行用 Paint.breakText() 实现。breakText() 有几种重载方法,基本用法大同小异。

文字对齐

简单的文字对齐可使用 Paint.setTextAlign() 接口设置。

复杂的文字对齐需要计算文字的边界值和绘制的起始点,通常是结合 Paint.getTextBounds()Paint.getFontMetrics() 测量属性值做偏移计算,以具体项目为准。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容