美文网首页Android自定义View
聊一聊Paint.FontMetrics.descent和Pai

聊一聊Paint.FontMetrics.descent和Pai

作者: 的一幕 | 来源:发表于2017-02-10 10:49 被阅读56次

就在昨天看到gjz的一个库的时候,遇到了一个大坑。其实说起来被某一篇文章给坑大了,本人也超喜欢gjz写的一些库文件,貌似有些崇拜了。
gjz的github:https://github.com/gjiazhe
库地址:https://github.com/gjiazhe/MultiChoicesCircleButton
以前在canvas.drawText的时候总是没有设置paint的align属性,这里说一下如果你的paint.setTextAlign(Paint.Align.CENTER);是这样的话,那么你就要注意了canvas.drawText(String text, float x, float y, Paint paint)的第二个和第三个参数了,x指的是文本的横向的中点坐标,y指的是文本的baseLineY在屏幕上面的纵坐标。当时看到

final float baseLineY = mCircleCentreY - radius - textHeight / 2- (fontMetrics.descent - fontMetrics.ascent) / 2 - fontMetrics.ascent;

这样去算出文字的baseLineY的值,后来去找资料fontMetrics.descentfontMetrics.ascent都表示的是什么,
结果查到的文章是这样的:

Ascent是baseline之上至字符最高处的距离
Descent是baseline之下至字符最低处的距离
说明图.png
这个是网上的说明图,我只是拿来用用,更为了好说明。如果都是距离的话fontMetrics.descent - fontMetrics.ascent这里就难得理解是文字占据的高度,这让我很纳闷。经过之后的debug测试后,发现fontMetrics.ascent是一个负值,看到一个负值后,终于理解了gjz为啥是这么算出文本占据的高度了。

总结:

fontMetrics.descent是baseline之上至字符最高处的位移,而不是高度,因此这里是一个正直
fontMetrics.ascent是baseline之下至字符最低处的位移,而不是高度,因此这里是一个负值

相关文章

  • 聊一聊Paint.FontMetrics.descent和Pai

    就在昨天看到gjz的一个库的时候,遇到了一个大坑。其实说起来被某一篇文章给坑大了,本人也超喜欢gjz写的一些库文件...

  • 和老公聊一聊

    今天跟老公聊天,说到跟孩子相关的事,我们一起讨论研究他之前沉迷于手机,未对孩子和我太多上心的问题。 关于他和久久的...

  • 和儿子聊一聊

    晚饭后,女儿回自己房间写作业,我们三口坐到了沙发上,在儿子讲完一个笑话之后,我们言归正传。 “儿子,妈妈问你一个问...

  • 和团委君聊一聊

    这个即将到来的五一你想要去哪里玩呢QwQ

  • 和年长的人聊一聊

    时间久了,越来越焦虑,昨天晚上找了学姐聊一聊,她曾经是我们的班助,现在在深圳,也算是年长我五岁了。聊一聊,终究是有...

  • 聊一聊读书和写作

    Sinny说:今天这一篇关于读书的碎碎念。公众号开通快两个月了,一步一步的拿到原创标识,拿到赞赏功能,也慢慢的开始...

  • 和自己随机聊一聊

    碎碎念现在的心情 年纪轻的时候以为有永远或者永恒 现在想起来好想大笑 真的是太年轻了没见过世面 哈哈哈 等到再大一...

  • 聊一聊 BufferedInputStream 和 Output

    一、BufferedInputStream BufferedInputStream 的作用是什么?能够提高效率吗?...

  • 和家长朋友聊一聊

    家长朋友,今天以这种方式让您知道孩子近段的状态,其目的就是想让您了解这一学期孩子的收获。通过与孩子四个月的相处,我...

  • 和小宝聊一聊规划

    小宝昨天晚上又和我聊了聊最近三五年的规划,大致的路线:去邮轮工作,然后考研,考个教师编制,要个许阳。 还准备带着我...

网友评论

    本文标题:聊一聊Paint.FontMetrics.descent和Pai

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