水平居中很简单,设置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 边界介绍如下图(图示从别处摘来的)
如上图所示坐标。
android drawtext 如何使文字居中
最新推荐文章于 2021-05-26 02:59:33 发布