关于Android中FontMetrics的几个属性讲解
来源:互联网 发布:易语言qq炫舞辅助源码 编辑:程序博客网 时间:2024/06/05 15:42
今天和大家聊一聊Android中关于FontMetrics的几个属性的理解,在Android中用画笔绘制文字时,文字最终的大小是和绘制文字的字体的类型和字体的大小是相关的。
设置字体类型 Paint.setTypeface(Typeface typeface)
设置字体大小 Paint.setTextSize(float textSize)
Paint.FontMetrics有5个属性,并且这5个属性都是跟字体相关的,下面是官方API文档的解释:
网上还有另一种翻译方式:
top: 字体中字符超出基线之上的最大距离
bottom: 字体中字符超出基线之下的最大距离
ascent: 单个字符超出基线之上的推荐距离
descent: 单个字符超出基线之上的推荐距离
leading: 标准行间距
其实翻译完之后还是很难理解具体是什么意思,所以我找来下面几个图认识一下:
注意,以上获取到的属性值,是相对于baseline的坐标值,而不是距离值。
字体的高度可以通过descent+Math.abs(ascent)计算得到。字符串的宽度可以通过Paint.measureText("xxxx")得到。注意,如果所选字体为等宽字体,则每个字符的宽度相等,如果非等宽字体,则字符宽度并不相同。
字符串的实际可视高度和宽度,即最小包围框则可以通过Paint.getTextBounds()或者TextView.getLineBounds()获得,如下图所示:
Paint.getTextBounds
这个方法获取字符[字符串]占据的矩形区域,意为字体可见部分的矩形区域
Rect bound = new Rect();
mPaint.getTextBounds(text, 0, text.length(), bound);
bound.right - bound.left //得到的就是字符[字符串]的可见部分矩形区域的宽度
Paint.measureText(text)
返回的是字符[字符串]的宽度,注意与
bound.right - bound.left相互区分.
因为通常来说每个字符两边都会留有一部分空白区域,便于阅读.所以measureText的尺寸通常会大于bound.right - bound.left.所以,对于单个字符来说:
measureText = bound.right - bound.left + 字符两边的留白宽度
下面再来说一说行高的计算方式:
字符所在行的高度 = ascent + descent + leading,即字符的高度+行间距,可以通过descent+Math.abs(ascent) + leading计算得到。对于TextView中的行高,可以直接通过getLineHeight()方法获取。
其实到这里理不理解都没有关系,在平常的开发中主要会用到获取字符或字符串宽度和高度,我们只需要知道他们的获取方式即可
宽度获取方法:Paint.measureText(text)
高度获取方法:descent+Math.abs(ascent)
以上所说都是个人理解,欢迎大家吐槽纠正! 0 0
- 关于Android中FontMetrics的几个属性讲解
- Android中FontMetrics对象的各种基准线
- Android中FontMetrics对象的各种基准线
- android中baseline fontmetrics
- Android字体属性Paint.FontMetrics
- Android 关于ListView几个特别的属性
- Android字体属性及测量(FontMetrics)
- android中mainifest的属性讲解
- android 中几个常用属性的设置
- Android 中几个常用属性的设置
- android 中几个常用属性的设置
- Android布局中几个常用的属性
- java FontMetrics的主要属性总结
- 关于 android 中 postDelayed方法的讲解
- 关于 android 中 postDelayed方法的讲解
- Android学习中关于WindowManager的讲解
- 关于 android 中 postDelayed方法的讲解
- 关于android中postDelayed方法的讲解
- AngularJS学习笔记(4)- AngularJS 控制器
- <Android>LinearLayout比例设置
- STM32有关USART的配置函数
- 第四周上机实践项目1-三角形类的构造函数(默认构造函数)
- 用jsp:include控制动态内容
- 关于Android中FontMetrics的几个属性讲解
- 一个简单的滚轮选取控件
- Monkey原理初步和改良优化--Android自动化测试学习历程
- atoi函数源代码
- 学习Markdown
- 选项卡(TabHost)的功能和用法
- Matlab求方差,均值
- matlab图像分割算法源码
- Android 深入ViewPager实现类京东商城首页广告效果