android drawtext参数,drawText参数介绍及绘制居中文本
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
在android自定义控件中经常用到canvas.drawText方法来绘制文本,我自己在用这个方法的时候,有很多迷惑,首先对参数含义不明白,其次对实现文本居中的计算公式也不太理解。
经过自己查阅相关博文以及请教一些大神,终于算是对这两个疑点理解好了,下面就进行一下总结。
一、方法参数介绍
首先可以看一下API上对这个方法的描述
可以看到,这四个参数依次为:text:需要绘制的文本;
x:文本的水平方向原点距其所在view左边的距离。原点默认是字符串的的最左边,如果设置了paint.setTextAlign(Paint.Align.CENTER);那么原点就是字符串的中心了;
y:表示文本的baseline距离所在view的顶部的距离;
paint:用来绘制文本的画笔。
二、绘制居中文本首先需要了解一个类,Paint.FontMetrics
这个类的在API中的介绍如下:
baseline为文本的基准线ascent:是baseline之上至字符最高处的距离;
bottom:是文本中字符的最下边到baseline的距离,即descent的最大值;
descent:是baseline之下至字符最低处的距离;
leading:上一行文本的descent到当前行ascent之间的距离;
top:是文本中字符的最上边到baseline的距离,即ascent的最大值。
注:top、ascent是负数,bottom、descent是正数。具体top、bottom与ascent、descent有什么区别从上面的描述中根本看不出来(上面的描述文字是借用的),如果哪位大神对top和ascent的区别比较清楚不妨指点我一下,谢谢。
他们之间的关系用图表示如下:(图是借用的)
文本居中baseline距view上边距的距离计算公式
公式一:中心轴线距view顶部的距离-文本高度的一半+|ascent|
int baseLine = (getMeasuredHeight() - fontMetrics.bottom + fontMetrics.top) / 2 - fontMetrics.top;
或
公式二:中心轴线距view顶部的距离+文本高度的一般-descent
int baseLine = getMeasuredHeight()/2 + (fontMetrics.descent- fontMetrics.ascent)/2 - fontMetrics.descent;
两个公式中top可以用ascent替换,bottom可以用descent替换,成对替换哦。
这两个公式的理解:
首先,文本居中的话那么文本的水平中心轴线应该和所在view的水平中心线重合;
接下来,descent-ascent的值可以看做文本的高度,这里ascent是负数所以是减号(我之前看着公式弄迷糊了就是因为不清粗ascent是负数);
能力有限,这些都只是整理网上别人写的博文加上自己的理解,如果有不妥的地方还望指正,不胜感激!
android drawtext参数,drawText参数介绍及绘制居中文本相关推荐
- ReactNative入门之android与rn初始化参数的传递
1.基本理念 RN APP本质上也是原生APP,只是在原生APP中加入了React Native视图的支持. 因此获取RN APP的启动参数的方法原生APP是一样的,获取启动参数后再通过合适的方法传递 ...
- android rn动态技术,ReactNative入门之android与rn初始化参数的传递
1.基本理念 RN APP本质上也是原生APP,只是在原生APP中加入了React Native视图的支持. 因此获取RN APP的启动参数的方法原生APP是一样的,获取启动参数后再通过合适的方法传递 ...
- vivo+x21+android版本,vivo X21参数_vivo X21配置怎么样-太平洋IT百科
vivo X21配置怎么样?vivo X21硬件参数是大家比较关注的话题,vivo X21已经上市,这款产品可谓是vivo年度产品,相比上一代V20有着极大的全面升级,相信会成为今年下线爆款产品,那么 ...
- R:热图解释 | pheatmap包参数及详细聚类图绘制流程(一篇解决热图绘制问题)
热图解释及pheatmap绘制热图 一.热图绘制原理 1.1 热图介绍 1.2 热图绘制准备--均一化 1.3 热图绘制方式 1.4 热图数据查看示例 二.pheatmap包简介 2.1 pheatm ...
- 在linux kernel或android中解析cmdline参数
文章目录 ★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ Kernel command line: earlycon androidboot.selinux=permissive uart_ ...
- android settext 参数,Android TextView.setTextColor()的参数设置方式
摘要:Android TextView.setTextColor()的参数设置方式 查了下资料发现setTextColor()的参数应该写成以下的这种形式: setTextColor(0xFF0000 ...
- uploadify插件可选参数的详细介绍
uploadify插件可选参数的详细介绍 以下是可选项的参数说明:(红色的属性代表常用的) 1 uploader 上传控件的主体文件,flash控件 默认值='uploadify.swf' 2 ...
- Android 系统(260)---Android 读取SIM卡参数
Android 读取SIM卡参数 package com.water.activity; import java.util.List; import android.app.Activity; imp ...
- Hadoop MapReduce Job 相关参数设置 概念介绍与理解
Hadoop MapReduce Job 相关参数设置 概念介绍与理解 InputFormat: 作用:将输入的文件分成 一个个split,并且将split 拆分成一个个<key,value& ...
最新文章
- 人类首次登月50年后,这60家公司决心重返月球
- FPS手游《战地先锋》性能案例精讲
- 程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?
- python脚本文件格式_Python 基础语法_Python脚本文件结构
- 使用Pytorch简单实现混合密度网络(Mixture Density Network, MDN)
- Linux内核启动:setup_arch
- MOVE降低高水位 HWM
- 深度篇——目标检测史(五) 细说 SSD 目标检测
- oracle连续周数,oracle周数计算
- HTML技巧篇——禁止网页元素被右击、拖动、选中、复制
- mysql的group by语句不会产生_MySQL:为什么查询列表中多了它,GROUP BY语句就会报错呢?...
- macOS Big Sur 11.2.3 (20D91) 虚拟机 ISO 镜像
- aiohttp 高并发web服务_python后台——asyncio,aiohttp入门教程,多进程+asyncio
- JavaScript基本原理常识
- linux系统--文件目录
- 回溯法经典算法 求集合中所有的子集
- 物理科普读物推荐:《物理精神》——人类文明创新的原动力
- dp的sst模式下training流程
- TCP IP学习笔记① 互联网通信过程
- 欧盟委员会开源计划办公室启动漏洞赏金