189 8069 5689

androidcanvasdrawText()文字居中效果-创新互联

本文跟大家分享下我关于drawText()文字居中的方法。

成都创新互联公司技术团队10余年来致力于为客户提供成都网站设计、成都网站建设、品牌网站制作营销型网站建设、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了上1000家网站,包括各类中小企业、企事单位、高校等机构单位。

先附上drawText()的方法说明

android canvas drawText()文字居中效果


说实话当时看了这个,我也没明白这个x,y坐标到底表达的啥意思,还一直以为是绘制文字中心的坐标,后来发现这个理解是错误的
要想理解这个首先看张图


像图上这样安卓的文字绘制是相对于基线绘制的,也就是图中的红线,而top+bottom的长度就等于字体高度.即等于|top|+|bottom|绝对值


实际绘制的时候取决于基线上一个点来绘制文字,而这个点有三种分别对应为left,center,right如下图


而drawText()方法中x,y坐标所指的点就是上图基线上三个点中的一个,具体是哪一个根据paint的setTextAlign()方法设置,默认为left
示例代码如下


Rect rect = new Rect(100,100,500,500);//画一个矩形 
    Paint rectPaint = new Paint(); 
    rectPaint.setColor(Color.BLUE); 
    rectPaint.setStyle(Paint.Style.FILL); 
    canvas.drawRect(rect, rectPaint); 
 
    Paint textPaint = new Paint(); 
    textPaint.setColor(Color.WHITE); 
    textPaint.setTextSize(50); 
    textPaint.setStyle(Paint.Style.FILL); 
    //该方法即为设置基线上那个点究竟是left,center,还是right 这里我设置为center 
    textPaint.setTextAlign(Paint.Align.CENTER); 
 
    Paint.FontMetrics fontMetrics = textPaint.getFontMetrics(); 
    float top = fontMetrics.top;//为基线到字体上边框的距离,即上图中的top 
    float bottom = fontMetrics.bottom;//为基线到字体下边框的距离,即上图中的bottom 
 
    int baseLineY = (int) (rect.centerY() - top/2 - bottom/2);//基线中间点的y轴计算公式 
 
    canvas.drawText("你好世界",rect.centerX(),baseLineY,textPaint); 

文章名称:androidcanvasdrawText()文字居中效果-创新互联
文章位置:http://cdxtjz.cn/article/dpddde.html

其他资讯