带有SpannableString的Android Canvas drawText

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有SpannableString的Android Canvas drawText相关的知识,希望对你有一定的参考价值。

我使用View制作了一个定制的Canvas.drawText()来绘制一些SpannableStrings。

当文本包含我制作的表情符号时,我会调用SpannableString.setSpan()(我不喜欢默认风格的表情符号)。我发现Canvas.drawText()没有绘制我设置的范围,而是绘制了默认风格的表情符号。我试着打电话给TextView.setText()通过相同的SpannableString,它的工作原理。我想使用Canvas来绘制性能文本(否则,在TextView中滚动时新增几个ListViews会导致严重的性能问题)。我怎么能用SpannableStringCanvas

抱歉我的英语不好,我不是母语人士。谢谢你提前!

编辑:其实我做了这个自定义View,以显示文本转换的动画。几个文本将横向穿过屏幕。我遇到的问题是TextView的绘制方法导致太多时间,动画看起来很糟糕。所以我想用Canvas直接绘制文本。可悲的是,我切换到StaticLayout仍然发现动画是生涩的。

答案

您可以尝试将Spannable添加到StaticLayout并将其绘制到Canvas

像这样的东西:

StaticLayout layout = new StaticLayout(yourSpannable, yourPaint, yourCanvas.getWidth(),
        Alignment.ALIGN_NORMAL, 1, 0, false);
layout.draw(yourCanvas);

以上是关于带有SpannableString的Android Canvas drawText的主要内容,如果未能解决你的问题,请参考以下文章

android中SpannableString之富文本显示效果

Android开发之SpannableString具体解释

Android SpannableString浅析

Android TextView结合SpannableString使用大全

Android项目实战: SpannableString与SpannableStringBuilder

Android 中实现特殊符号㎡ 的显示 使用SpannableString类来实现