Graphics->Text Align

http://blog.csdn.net/mapdigit/article/details/7784035

 

 

前面例子Android ApiDemos示例解析(68):Graphics->MeasureText 介绍了如何取的所绘制文字串的尺寸(宽度和高度),文字的缺省对齐为左对齐,本例介绍了其它几种对齐方式:Left, Center ,Right 以及如何沿任意曲线绘制文字。

Paint的getTextWidths 方法取得字符串中每个字符的宽度:

  1. private float[] buildTextPositions(String text,
  2.  float y, Paint paint) {
  3.  float[] widths = new float1;
  4.  // initially get the widths for each char
  5.  int n = paint.getTextWidths(text, widths);
  6.  // now popuplate the array,
  7.  //interleaving spaces for the Y values
  8.  float[] pos = new float[n * 2];
  9.  float accumulatedX = 0;
  10.  for (int i = 0; i < n; i++) {
  11.  pos[i*2 + 0] = accumulatedX;
  12.  pos[i*2 + 1] = y;
  13.  accumulatedX += widths[i];
  14.  }
  15.  return pos;
  16. }

然后使用三种不同对齐方式绘制文字:Left,Center,Right:

  1. p.setTextAlign(Paint.Align.LEFT);
  2. p.setTextAlign(Paint.Align.CENTER);
  3. p.setTextAlign(Paint.Align.RIGHT);
  4. canvas.drawText(TEXT_R, x, y, p);

创建一条路径makePath

  1. private static void makePath(Path p) {
  2.  p.moveTo(100);
  3.  p.cubicTo(100, –50200503000);
  4. }

然后沿这条路径,也以三种不同对齐方式沿Path绘制文字:

  1. p.setTextAlign(Paint.Align.LEFT);
  2. p.setTextAlign(Paint.Align.CENTER);
  3. p.setTextAlign(Paint.Align.RIGHT);
  4. canvas.drawPath(mPath, mPathPaint);
  5. canvas.drawTextOnPath(TEXTONPATH, mPath, 00, p);