关于文字绘制

本文介绍了如何使用Android中TextPaint和Paint对象获取文字的宽度和高度,并提供了两种方法:一种是利用measureText()和getFontMetrics()方法;另一种是通过getTextBounds()方法。此外,还提到了使用StaticLayout计算多行文字宽高的方法。

确定文字的宽高

  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属性

Tips:
(1) 还有一种方式获取宽高,但是不是非常准确,仅获取显示文字的最小范围

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高度

确定多行文字的宽高

通过StaticLayout来计算,可以做出限制宽高的效果

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 三种。

转载于:https://my.oschina.net/u/1011897/blog/1931647

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值