關於文字繪製

肯定文字的寬高

  1. 獲取文字寬度
TextPaint.setTextSize(mBiggerTextSize);
mTextPaint.setTypeface(Typeface.DEFAULT_BOLD);
int textWidth = (int) mTextPaint.measureText(currentNumber); // 肯定文字寬度
  1. 獲取文字高度
Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics();
 leading = paint.getFontMetrics().leading; //其中baseline屬性對應fontMetrics.leading
 top = paint.getFontMetrics().top;
 ascent = paint.getFontMetrics().ascent;
 descent = paint.getFontMetrics().descent;
 bottom = paint.getFontMetrics().bottom;

經過FontMetrics獲取文字高度相關屬性 FontMetrics屬性java

Tips:
(1) 還有一種方式獲取寬高,可是不是很是準確,僅獲取顯示文字的最小範圍canvas

Rect rect = new Rect();
mPaint.getTextBounds(text, 0, test.length(), rect);
int width = rect.width();//文字寬
int height = rect.height();//文字高

(2) 最後調用canvas.drawText(text, dx, dy, mTextPaint);進行繪製,其中dx爲文字最邊距,dy爲文字對應的baseline高度code

肯定多行文字的寬高

經過StaticLayout來計算,能夠作出限制寬高的效果blog

StaticLayout myStaticLayout = new StaticLayout(text, mTextPaint, canvas.getWidth(), Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
myStaticLayout.draw(canvas);
// layout的對其方式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三種。
相關文章
相關標籤/搜索