带有SpannableString的Android Canvas drawText

时间:2016-06-12 03:35:52

标签: android canvas spannablestring

我使用View制作了自定义Canvas.drawText()来绘制一些SpannableString

当文本包含我制作的表情符号时,我会调用SpannableString.setSpan()(我不喜欢默认风格的表情符号)。 我发现Canvas.drawText()没有绘制我设置的范围,而是绘制了默认风格的表情符号。 我试图调用TextView.setText()传递相同的SpannableString并且它有效。 我想使用Canvas绘制文本以提高性能(否则,在TextView中滚动时会新增几个ListView会导致严重的性能问题)。如何使用SpannableString绘制Canvas

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

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

1 个答案:

答案 0 :(得分:2)

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

这样的事情:

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