最近公司让做了验证码输入框的功能,用到了android绘制文本,网上查了一下资料,
1.基准点是baseline(第三条线),绘制文本都是从baseline处开始的;
2.ascent(负值):是baseline之上至字符最高处的距离;
3.descent(正值):是baseline之下至字符最低处的距离(3至4之间的距离);
4.leading:是上一行字符的descent到下一行的ascent之间的距离,也就是相邻行间的字符高度差;
5.top(负值):是指的是最高字符到baseline的值,即ascent的最大值
6.bottom(正值):是指最低字符到baseline的值,即descent的最大值
baseline是基线,baseline以上是负值,baseline以下是正值,因此ascent和top都是负值,descent和bottom都是正值。
比如
public void drawText(String text, float x, float y, Paint paint)
text:要绘制的文字 x:绘制原点x坐标 y:绘制原点y坐标 paint:用来做画的画笔
x=getWidth()/2-paint.measureText(mText)/2; // x=控件的宽度/2-文本的宽度/2
y=getHeight()/2+(fontMetrics.bottom-fontMetrics.top)/2-fontMetrics.bottom // y=控件的高度/2+文本的高度/2
getWidth(): 控件的宽度(view的宽度)
getHeight():控件的高度(view的高度)
paint.measureText(mText)是精确的测出绘制文本的宽度
fontMetrics.bottom-fontMetrics.top就是绘制文本的高度。
网友评论