获取文字基线和文字宽度不准确原因分析

问题现象

最近在开发项目的时候,我遇到了一个问题,就是文字 宽度 和 基线 获取不准的情况,导致绘制的文字总是偏的,这可让我急死了,不过,好在找到了问题所在。

问题来源

趁着这个机会,我们也来总结一下如何获取文字基线和文字宽高,废话不多说,上码!!!

首先,我们来获取文字基线

private int getTextBaseLine() {
        Paint.FontMetricsInt fontMetricsInt = mLoadingTextChangePaint.getFontMetricsInt();
        int dy = (fontMetricsInt.bottom - fontMetricsInt.top)/2 - fontMetricsInt.bottom;
        return getHeight()/2 + dy;
    }

 前面章节,我画图解析过,大家可以自行查看Android自定义控件(四)---实战篇(详解onDraw),在这里我只是把代码封装一下。

然后,获取文字宽高

private int getTextWidth(String str) {
        Rect bounds = new Rect();
        mLoadingTextNormalPaint.getTextBounds(str,0,str.length(),bounds);
        return bounds.width();
    }

    private int getTextHeight(String str) {
        Rect bounds = new Rect();
        mLoadingTextNormalPaint.getTextBounds(str,0,str.length(),bounds);
        return bounds.height();
    }

 问题分析

分析的的原因就是  获取 基线 和 宽高 是在 设置画笔文字大小之前。

从代码中可以看到 ,我们获取 基线 和 宽高 都是基于 绘制文字的画笔 , 而你却把设置 绘制文字的画笔 方法 写在后面 ,你说你如何能正确获取到文字的 基线和宽高。

从简来说:就是代码顺序写错了。

总结

这个问题可能是小概率事件,但是,我这个人就是这样的,出了问题就想记录一下。哈哈哈!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

super码王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值