Android 自定义控件文字的居中绘制

Android 自定义控件文字的居中绘制_第1张图片

如上图,左边是一个圆,右边是两个文本,现在需要绘制一个与圆心居中对齐的文本,现拉出一条从圆心中间横穿的横线,红色横线将文本一分为二,以红色横线为基线的文本是上图中最右边的text文本,可我们的目标是要中间那个与圆心居中的文本,因此我们找距离关系:

       1、最右边文字红色基线到文字最顶层的距离是,paint.ascent(负数)(paint是绘制文本的画笔),红色基线到文字最底层的距离是paint.descent(正数).

       2、绿色的线是最右边文本的中间线,文字高度的一般距离是:(paint.descent-paint.ascent)/2

       3、从图上来说最右边文本向下偏移一定距离就可实现我们开始的居中效果,偏移的距离就是红线距离绿线的高度,也即文字一半的高度-descent。假如我们要居中对齐的红线y坐标为y1,那么我们文字的y坐标是y1+(paint.descent-paint.ascent)/2-paint.descent=y1-(descent+ascent)/2,好了这个公式拿去用吧

你可能感兴趣的:(Android)