我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

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://shouzuofang.com/article/dpddde.html

其他资讯