我是靠谱客的博主 阳光唇膏,最近开发中收集的这篇文章主要介绍Android富文本展示,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

详情内容主要是图文和链接形式,推送给客户端后需要在APP内进行展示,移动端富文本的实现技术后大致分为原生实现和webview实现两种,下面分别对两种技术各自的特点和实现进行简要介绍。

原生实现-动态生成TextView和ImageView

获取到详情数据后根据文字和图片的具体数量和相对位置动态生成textview和imageview展示这些内容。缺点是需要在内容解析上花费大量精力,可支持的内容形式也比较有限。除非是非常简单的场景,这种方式一般不会采用。

原生实现-SpannableString

利用TextView对SpannableString的支持,将HTML文本解析,转化为SpannableString后进行展示,优点是安卓SDK中已经提供了相关的工具,即Html类,免去了手动解析的工作,并且具有原生性能,缺点是支持的内容形式比较优先,而且如果内容较多,Html.fromhtml()也相应会比较耗时。

支持的内容标签:

  • 字体:<font>,颜色(color)、字体(face)、字体样式:粗体、斜体、下划线,但不支持大小(size),但可以自定义Html.TagHandler以实现对文字大小的支持;
  • 列表:<ul><li>
  • 图片:<img>
  • 其他:<div><span><strong><b><em><cite><dfn><i><big><small><blockquote><tt><p><a><u><del><s><strike><sup><sub><h><br>

为了方便使用者拓展,提供了Html.TagHandler接口,由用户自己解析处理HTML标签。上述标签已经涵盖了多数简单的需求场景,如果有能力通过Html.TagHandler几乎可以实现任何SpannableString的能力。如果不想自行定义标签解析器,也有一些第三方的库可以提供支持。

第三方库:

  • HtmlSpanner:增加了更多标签的支持,免去自定义tag解析器的麻烦。

采用原生的方式,归根结底取决于SpannableString的能力,SpannableString无法实现的需求这条技术方案就只能被迫放弃。

WebView实现

采用WebView实现富文本展示可以说是能力支持最全的了,其充分利用了移动web端已有的能力,只需简单处理甚至不用额外处理就可以实现对富文本的支持。

支持的内容标签:

  • 几乎所有的html标签,包括视频、图片、表格等

核心方法:

// 加载富文本内容
webView.loadData(htmlStr, "text/html", "UTF-8");//中文可能乱码
webView.loadDataWithBaseURL(null, htmlStr, "text/html", "UTF-8", null);//推荐

其他常见配置:

webView.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);//取消滚动条
webView.getSettings().setSupportZoom(false);//不支持缩放功能

图片宽度适应屏幕:

// jsoup 修改 img 的属性:
final Document doc = Jsoup.parse(htmltext);

final Elements imgs = doc.getElementsByTag("img");
for (int i = 0; i < imgs.size(); i++) {
   	//宽度填充手机,高度自适应
   	//这里优化的方向为先判断图片原本的大小,达到阈值才进行图片大小适配
	imgs.get(finalI).attr("style", "width: 100%; height: auto;");
}

视频宽度适应屏幕:

// jsoup 修改 embed 的属性:
Elements embeds = doc.getElementsByTag("embed");
for (Element element : embeds) {
    //宽度填充手机,高度自适应
    element.attr("width", "100%").attr("height", "auto");
}

//webview 无法正确识别 embed 为视频,把这个标签改成 video
doc.select("embed").tagName("video");

最后

以上就是阳光唇膏为你收集整理的Android富文本展示的全部内容,希望文章能够帮你解决Android富文本展示所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部