我们经常在做自定义控件的时候,有些控件是需要图文一起显示的,显示文字就肯定要用到drawText 方法,而drawText(str, x, y, paint)有两个参数x 和 y是绘制的坐标,我们必须确定这个坐标之后,才能知道从哪里绘制,有时候我们绘制完一个字符串,而想在这个字符串的后面重新进行一些绘制的时候,就需要重新获取绘制坐标,这个时候首先想到的就是得到前一个字符串的绘制宽度 + 前一个字符串的绘制坐标就可以推算我们现在绘制的坐标了。
String str = "hello";
canvas.drawText(str, x, y, mPaint);
//1. 粗略计算文字宽度:
float width = mPaint.measureText(str);
//2. 计算文字的矩形,可以得到宽高:
Rect rect = new Rect();
mPaint.getTextBounds(str, 0, str.length(), rect);
int w = rect.width();
int h = rect.height();
//3. 精确计算文字的宽度:
public static int getTextWidth(Paint mPaint, String str)
{
float iSum = 0;
if(str != null && !str.equals(""))
{
int len = str.length();
float widths[] = new float[len];
paint.getTextWidths(str, widths);
for(int i = 0; i < len; i++)
{
iSum += Math.ceil(widths[i])
}
}
return (int)iSum;
}