在网上看很多说canvas的text的居中是以baseline为基准的,但是用了他们的代码,永远无法使text居中,要么可以居中,但是换一个分辨率,就又偏差了。
所以我是直接用height-(mFontMetricsInt.bottom)/2来设置。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int height = getMeasuredHeight();
int width = getWidth();
paint.setTextSize(getHeight());
int textWidth = getTextWidth("完成" + progress + "%");
textTop = height - mFontMetricsInt.bottom / 2;
canvas.drawText("完成" + progress + "%", textLeft, textTop, paint);
}
这样设置canvas的textTop就大致适用于其他分辨率的手机了。