android drawText 绘制 数字 注意点

先上一张图

Leading 是对那些顶部有特殊符号的才有意义 比如 拼音声调 其他的默认是0

对于数字来说 是没有这个特殊符号的 所以数字的Leading 就是 0

对于数字来说 都是这种样式

底部的Descent 是空白的

less 复制代码
canvas.drawText(9+"g",x,y,paint);

绘制数字 指定的 y 是baseLine的位置

所以想绘制数字到某个坐标 比如文字左上角是 a,b 那么 y应该设置为 数字的高度 + b ,x 设置为a

还有一个小问题 比如想让 数字以横坐标 x 为中心点。计算数字的起始点 一般是

js 复制代码
x - 数字宽度 / 2

这个数字宽度有两种算法

js 复制代码
float measureWith = paint.measureText(""+index);
或者 

Rect drawTextRect = new Rect();
paint.getTextBounds(index+"", 0, (index+"").length(), drawTextRect);

两种都没有问题 区别就是 measureText 获取的值大一点 肯能考虑了字形啥的 所以 用measureText 看起来也更居中一点。

相关推荐
IvanCodes1 小时前
MySQL 视图
android·数据库·sql·mysql·oracle
KevinWang_1 小时前
Java 和 Kotlin 混编导致的 bug
android·kotlin
好学人1 小时前
Android动画系统全面解析
android
leverge20092 小时前
android studio 运行java main报错
android·ide·android studio
RichardLai882 小时前
Flutter 环境搭建
android·flutter
思想觉悟2 小时前
ubuntu编译android12源码
android·ubuntu·源码
好学人2 小时前
Android自定义控件事件传递机制
android
V少年2 小时前
深入浅出 C++ 标准库
android
V少年2 小时前
深入浅出 C++ 特有关键字
android
weixin_432989553 小时前
Kotlin delay方法解析
android·开发语言·kotlin