我正在准备app,其中包含用于自定义样式的复选框,如粗体,斜体,下划线,color.etc ..
我有点困惑哪种方法对性能有好处.我尝试过类型面,但是当用户选中两个复选框时,它只显示最后一个值.它不能正常工作.
我有点困惑哪种方法对性能有好处.我尝试过类型面,但是当用户选中两个复选框时,它只显示最后一个值.它不能正常工作.
解决方法
Typeface是
Paint对象用于绘制文本的图形元素.它指定字体(例如Monospace,Sans Serif,Serif等)和字体样式(例如Bold,Italic等),并在
Spannable和
Html内部使用.
所以应该在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的性能观点更快.