Android Text Measure/Draw

确定一个字符串绘制的字符高度以及行高

fontMetrics.png
实例

字符高度

我们在绘制文字的时候,需要确定绘制的字符高度以免发生重叠等问题,最简单的方式是通过Paint的fontMetrics来确定,如上图所示,一个文字有五个属性

  • top 文字绘制行顶部相对baseLine的y值
  • ascent 单个文字顶部相对baseLine的y值
  • baseLine 文字绘制的y轴基点,用canvas.drawText(String text, float x, float y, Paint paint)方法绘制的时候,参数y就是绘制文字的baseLine
  • bottom 文字绘制行底部相对baseLine的y值
  • descent 单个文字底部相对baseLine的y值
  • 还有一个leading属性,是文字行间距

所以很明显的,字符高度就是descent - ascent

行高

行高就是bottom - top + leading

绘制

progress.jpg

canvas.drawText(String text, float x, float y, Paint paint)方法绘制的时候
需要确定baseLine,比如我需要绘制一个垂直进度图,需要计算高度生成MeasureSpec,从上往下计算:textY

  • textY += paddingTop
  • text高度=bottom-top + leading
  • 自己定义的进度文字之间的间距D*M个
  • text高度*N个...
  • textY += paddingBottom

绘制的时候
计算baseLine的位置abs(ascent)

你可能感兴趣的:(Android Text Measure/Draw)