Android中FontMetrics对象的各种基准线_Ubuntu_青云站长教程网 365bet是什么_365bet外围时时彩_365bet备用官网
欢迎来到站长教程网!

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号