美文网首页
Android drawText

Android drawText

作者: Heezier | 来源:发表于2021-05-15 10:32 被阅读0次

drawText

canvas.drawText(String text, float x, float y, Paint paint)

image-20210515093225084

注释:
text : 文字的内容

x:文字在X轴的起始坐标

y:y为文字的基线(baseline)位置,并非文字在Y轴的起始坐标

baseline

baseline在文字中的表现,即E和h的下边界线

我们文字的绘制以baseline为基准,但是文字有可能绘制到baseline以下。

baseline的值就为以View的左上角为Y轴0点的距离

img

FontMetrics

它是一个Paint的内部类,作用是“字体测量”。它里面呢就定义了top,ascent,descent,bottom,leading五个成员变量

public static class FontMetrics {
    public float ascent;
    public float bottom;
    public float descent;
    public float leading;
    public float top;

    public FontMetrics() {
        throw new RuntimeException("Stub!");
    }
}

每个值含义如下:

top/bottom : 限制所有字形的顶部和底部范围,他的值是相对baseline为0点,往上是负值,往下是正值,所以bottom 是一个正数,top是一个负数

descent/ascent:是限制普通字符的顶部和底部范围,他的值是相对baseline为0点,往上是负值,往下是正值,所以descent是一个正数,ascent是一个负数

leading:指的是行的额外间距,即对于上下相邻的两 行,上行的 bottom 线和下行的 top 线的距离

因为语言字符很多,所有用top/bottom

image-20210515101524848

FontMetrics的获取:

Paint.FontMetrics fontMetrics = paint.getFontMetrics();

如下:

image-20210515090833075

文字的高度=descent - ascent

行高 = bottom - top + leading

绘制在View的Y轴中心

baseline的位置应该 = View的Y轴中心坐标值 + 文字高度的一半 - descent

由此可以得到:

baseline = getHeight()/2 + (fontMetrics.descent - fontMetrics.ascent) / 2 - fontMetrics.descent;

最终也可以简化为:

 getHeight()/2 - (fontMetrics.descent + fontMetrics.ascent)/2;
image-20210515102714723

参考文章:

https://www.jianshu.com/p/a8df026694c8

https://www.jb51.net/article/158939.htm

相关文章

  • Android drawText

    drawText canvas.drawText(String text, float x, float y, P...

  • android drawtext 之baseline

    在android中绘制文本的方法如下 drawText( String text, floatx, floaty...

  • android drawText居中

    比较简单的东西,为了防止以后忘记,这里记录下。 注意以下几点 public void drawText(@NonN...

  • Hencoder学习笔记1-2

    HenCoder Android 开发进阶: 自定义 View 1-2 Paint 详解 颜色效果drawText...

  • Android中canvas.drawText 绘制文本居中

    Android中canvas.drawText 绘制文本居中 因为最近多开项目,时间主要花在 coding 和 r...

  • Android的DrawText详解

    如果你经常使用Canvas的draw***方法去绘制一些图像图形,绘制的坐标是从Canvas左上角开始计算的,如果...

  • 公式

    DRAWTEXT_FIX(1,0.6,0.9,0,'行业:'),COLORGREEN; DRAWTEXT_FIX(...

  • ffmpeg的一些坑

    我们使用drawtext命令行可能出现“No such filter: 'drawtext” 错误,这个说明我们没...

  • Android绘图之drawText,getTextBounds

    Android 绘图学习 1如何测量一段文本占用的长度和宽度 Paint类提供了测量宽高的方法:getTextBo...

  • Android TextView 相关

    概述 Android 自定义View过程中,绘制文字主要有如下手段: 通过Canvas的drawText的相关Ap...

网友评论

      本文标题:Android drawText

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