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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...