This commit is contained in:
sloop
2016-05-15 22:10:33 +08:00
parent 1b9d3b54ff
commit a086473a9a

View File

@@ -221,12 +221,39 @@ leading | + | 行间距,当前行bottom与下一行top之间的距离的推荐
而让文字垂直居中则有些麻烦了因为BaseLineY既不是顶部底部也不是中心所以文本居中最难的内容就是计算BaseLineY的位置。
我们已知:
> 1. 中心位置坐标centerX, centerY
2. 文本高度height descentascent
3. descent的坐标descentY centerY 1/2height
4. baseLineY坐标baseLineY descentYdescent
通过上面内容可以推算出如下公式:
> baseLineY centerY 1/2(ascent + descent)
**根据公式我们可以封装一个方法:**
``` java
/**
* 居中绘制文本
*
* @param text
* @param canvas
* @param paint
*/
public void drawTextByCenter(String text, float x, float y, Canvas canvas, Paint paint) {
Paint tempPaint = new Paint(paint); // 创建一个临时画笔,防止影响原来画笔的状态
tempPaint.setTextAlign(Paint.Align.CENTER); // 设置文本对齐方式为居中
// 通过y计算出baseline的位置
float baseline = y - (tempPaint.descent() + tempPaint.ascent()) / 2;
canvas.drawText(text, x, baseline, tempPaint); //绘制文本
}
```
**测试方法是否正确**