Android Canvas.drawText() 将字写在Bitmap上后emoji表情不显示

发布于 2022-09-07 08:02:33 字数 1118 浏览 22 评论 0

类似的问题在stockoverflow上也有:
https://stackoverflow.com/questions/47807621/draw-emoji-on-bitmap-with-drawtextonpath

我的代码如下:

    private Bitmap convertText2Bitmap(String text) {
        if (TextUtils.isEmpty(text)) {
            return null;
        }
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.RED);
        paint.setTextSize(sbTextSizeSP.getProgress());
        paint.setDither(true);
        paint.setFilterBitmap(true);

        //测量text的宽高
        Rect bounds = new Rect();
        paint.getTextBounds(text, 0, text.length(), bounds);
        Bitmap bitmap = Bitmap.createBitmap(bounds.width(), bounds.height(), Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(bitmap);
        Paint.FontMetrics fontMetrics = paint.getFontMetrics();

        float yPos = -fontMetrics.top;
        canvas.drawText(text, 0, yPos, paint);

        return bitmap;
    }

大概在字体大于300px左右,bitmap上就没有emoji了。当字体小于300px是正常显示的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文