android – Spannable Vs Typeface VS Html

前端之家收集整理的这篇文章主要介绍了android – Spannable Vs Typeface VS Html前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在准备app,其中包含用于自定义样式的复选框,如粗体,斜体,下划线,color.etc ..
我有点困惑哪种方法性能有好处.我尝试过类型面,但是当用户选中两个复选框时,它只显示最后一个值.它不能正常工作.

解决方法

TypefacePaint对象用于绘制文本的图形元素.它指定字体(例如Monospace,Sans Serif,Serif等)和字体样式(例如Bold,Italic等),并在 SpannableHtml内部使用.

所以应该在Spannable和Html之间进行性能比较.

Html.fromHtml是一个更昂贵的操作,因为它涉及解析Html.
我在Traceview中使用了以下代码,并在Html和Spannable之间进行了比较.它基本上将文本设置为粗体并设置超链接.

Debug.startMethodTracing("htmlspan");
Spanned s1 = Html.fromHtml("<b>text1: Constructed from HTML programmatically.</b> Click <a href=\"http://www.google.com\">Link</a> ");
tv1.setText(s1);
Debug.stopMethodTracing();
tv1.setMovementMethod(LinkMovementMethod.getInstance());

Debug.startMethodTracing("normalspan");
SpannableString s2 = new SpannableString("text2: Constructed from JAVA programmatically. Click here.");
s2.setSpan(new StyleSpan(Typeface.BOLD),45,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
s2.setSpan(new URLSpan("http://www.google.com"),53,53+4,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv2.setText(s2);
Debug.stopMethodTracing();
tv2.setMovementMethod(LinkMovementMethod.getInstance());

结果:

> Html API:~14-15ms. (org.ccil.cowan.tagsoup.Parser.parse API大约需要12.282ms)
> Spannbale API:~2-2ms.

TraceView for Html API:

TraceView for Spannable API:

总结:与Html相比,直接使用Spannable的性能观点更快.

猜你在找的Android相关文章