android drawtext 如何使文字居中

来源:互联网 发布:大淘客联盟cms怎么申请 编辑:程序博客网 时间:2024/05/21 12:51
水平居中很简单,设置Paint.Align.CENTER 属性即可。
mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);mTextPaint.setStrokeWidth(3);mTextPaint.setTextSize(80);mTextPaint.setTextAlign(Paint.Align.CENTER);mTextPaint.setColor(0xff00ff00);

垂直居中有点难度,需要计算一下:
private Paint.FontMetricsInt fmi;
fmi = mTextPaint.getFontMetricsInt();float fontheight = fmi.bottom - fmi.top;Log.e("&&&&&", "fmi.top =" + fmi.top + "::bottom=" + fmi.bottom);Log.e("&&&&&", "fmi.ascent =" + fmi.ascent + "::fmi.descent=" + fmi.descent);其中top ascent 都是负值, bottom  descent 正值。综合计算公式如下(主要就是计算相对于baseline 的偏移):我是这样理解的。text的中心基于baseline偏移量 (fmi.top + fmi.bottom)/2.所以mTextCenterY = mCenterY - (fim.top + fmi.bottom)/2. 简化如下:mTextCenterY = mCenterY - fmi.top/2 - fmi.bottom/2;
canvas.drawText(String.valueOf(mPercent) + "%", mCenterX, mTextCenterY, mTextPaint);text 边界介绍如下图(图示从别处摘来的)

如上图所示坐标。



0 0
原创粉丝点击