我正在准备一个应用程序,其中包含一个用于定制样式的复选框,如粗体、斜体、下划线、颜色等。我有点搞不懂哪种方法对性能有好处。我尝试过字体,但是当用户选择两个复选框时,它只显示最后一个值。效果不太好。
发布于 2014-05-16 01:29:00
字体是画画对象用于绘制文本的图形元素。它指定字体(例如Monospace、Sans Serif、Serif等)以及字体的样式(如Bold、Italic等)斯潘和Html都在内部使用。
因此,应该在Spannable和Html之间进行性能比较。
Html.fromHtml是一个代价更高的操作,因为它涉及到对Html的解析。我在曲景城中使用了下面的代码,并对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), 0, 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的TraceView:

可扩展API的TraceView:

摘要:与Spannable相比,直接使用Html的性能更快。
发布于 2014-05-12 03:44:18
Spannable内部使用字体。Spannable是由android框架提供的,以方便开发。因此请使用Spannable。
https://stackoverflow.com/questions/23552437
复制相似问题