gpt4 book ai didi

android - Spannable 与字体与 Html

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:13 24 4
gpt4 key购买 nike

我正在准备一个包含用于自定义样式(例如粗体、斜体、下划线、颜色等)的复选框的应用...我对哪种方法对性能有好处感到有点困惑。我试过字体,但是当用户选择两个复选框时,它只显示最后一个值。效果不佳。

最佳答案

TypefacePaint 使用的图形元素用于绘制文本的对象。它指定字体(例如 MonospaceSans SerifSerif 等)和字体样式(例如 Bold, Italic, 等) 并被 Spannable 内部使用和 Html .

所以性能比较应该在SpannableHtml之间进行。

Html.fromHtml是一项成本较高的操作,因为它涉及解析 Html。我将以下代码与 Traceview 一起使用并对 HtmlSpannable 进行了比较。它基本上将文本设置为粗体并设置超链接。

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 API:~14-15ms。(org.ccil.cowan.tagsoup.Parser.parse API 耗时约 12.282ms)
  • Spannbale API:~1-2 毫秒。

Html API 的 TraceView: TraceView for Html API

用于 Spannable API 的 TraceView: TraceView for Spannable API

总结:从性能上看直接使用SpannableHtml要快

关于android - Spannable 与字体与 Html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com