Android中FontMetrics对象的各种基准线_Ubuntu_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • Ubuntu

    当前位置:主页 > 服务器教程 > Ubuntu >

    Android中FontMetrics对象的各种基准线

    时间:2019-11-09|栏目:Ubuntu|点击:
  • Android中FontMetrics对象的各种基准线(以及怎么获取文字的width和height) 。

    Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标。

    public static class FontMetrics {       /**       * The maximum distance above the baseline for the tallest glyph in        * the font at a given text size.       */       public float   top;       /**       * The recommended distance above the baseline for singled spaced text.       */       public float   ascent;       /**       * The recommended distance below the baseline for singled spaced text.       */       public float   descent;       /**       * The maximum distance below the baseline for the lowest glyph in        * the font at a given text size.       */       public float   bottom;       /**       * The recommended additional space to add between lines of text.       */       public float   leading;   }  

    它的各基准线可以参考下图:

    Android中FontMetrics对象的各种基准线


    上图其实是通过代码画出来的,具体代码如下:

    /** 绘制FontMetrics对象的各种线 */   mPaint.reset();   mPaint.setColor(Color.WHITE);   mPaint.setTextSize(80);   // FontMetrics对象    FontMetrics fontMetrics = mPaint.getFontMetrics();   String text = "abcdefg";   // 计算每一个坐标    float textWidth = mPaint.measureText(text);   float baseX = 30;   float baseY = 700;   float topY = baseY + fontMetrics.top;   float ascentY = baseY + fontMetrics.ascent;   float descentY = baseY + fontMetrics.descent;   float bottomY = baseY + fontMetrics.bottom;   // 绘制文本    canvas.drawText(text, baseX, baseY, mPaint);   // BaseLine描画    mPaint.setColor(Color.RED);   canvas.drawLine(baseX, baseY, baseX + textWidth, baseY, mPaint);   mPaint.setTextSize(20);   canvas.drawText("base", baseX + textWidth, baseY, mPaint);   // Base描画    canvas.drawCircle(baseX, baseY, 5, mPaint);   // TopLine描画    mPaint.setColor(Color.LTGRAY);   canvas.drawLine(baseX, topY, baseX + textWidth, topY, mPaint);   canvas.drawText("top", baseX + textWidth, topY, mPaint);   // AscentLine描画    mPaint.setColor(Color.GREEN);   canvas.drawLine(baseX, ascentY, baseX + textWidth, ascentY, mPaint);   canvas.drawText("ascent", baseX + textWidth, ascentY + 10, mPaint);   // DescentLine描画    mPaint.setColor(Color.YELLOW);   canvas.drawLine(baseX, descentY, baseX + textWidth, descentY, mPaint);   canvas.drawText("descent", baseX + textWidth, descentY, mPaint);   // ButtomLine描画    mPaint.setColor(Color.MAGENTA);   canvas.drawLine(baseX, bottomY, baseX + textWidth, bottomY, mPaint);   canvas.drawText("buttom", baseX + textWidth, bottomY + 10, mPaint);  

    相信通过以上程序,能够很好的理解topLine,buttomLine,baseLine,ascentLine,descentLine。

    另外:Paint类有两个方法

    上一篇:Android中Matrix的set、pre、post的区别

    栏    目:Ubuntu

    下一篇:Android中XML解析

    本文标题:Android中FontMetrics对象的各种基准线

    本文地址:http://www.jh-floor.com/fuwuqijiaocheng/Ubuntu/123567.html

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号