带有 SpannableString 的 Android Canvas drawText

Fro*_*Lau 3 android canvas spannablestring

我做了一个自定义的View使用Canvas.drawText()得出一些SpannableString秒。

SpannableString.setSpan()在文本包含我制作的表情符号时调用(我不喜欢默认样式的表情符号)。我发现Canvas.drawText()它没有绘制我设置的跨度,而是绘制了默认样式的表情符号。我试图TextView.setText()通过相同的方式调用SpannableString它并且它有效。我想用来Canvas绘制文本以提高性能(否则,TextView在滚动时更新几个sListView会导致严重的性能问题)。怎样绘制SpannableStringCanvas

对不起,我的英语不好,我不是母语人士。感谢提前!

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

ear*_*jim 5

您可以尝试将您的添加Spannable到 aStaticLayout并将其绘制到 a Canvas

像这样的东西:

StaticLayout layout = new StaticLayout(yourSpannable, yourPaint,
        yourCanvas.getWidth(), Alignment.ALIGN_NORMAL, 1, 0, false);
layout.draw(yourCanvas);
Run Code Online (Sandbox Code Playgroud)