Android中显示Html内容(总结)

时间:2024-03-23 07:34:49

效果图如下:

Android中显示Html内容(总结)

首先,Android中显示Html内容,有3中方式:(目前我用到的有这3种)

1、可以利用Android原生的Html.fromHtml(str, imageGetter, tagHandler)来进行显示。(不过,我这边用了,即使加了页面加载动画,还是觉得非常慢,有大量图片,会导致OOM;如果图片不多的话,可以考虑)

2、利用第三方插件HtmlTextView。

GitHub地址:https://github.com/PrivacyApps/html-textview

图片加载很顺畅,使用方法也非常简单,不过,有两个注意事项:

(1)其中,HtmlHttpImageGetter有3个构造函数,可以根据自己的情况选择。

(2)加载大量图片的时候,会导致OOM内存溢出。针对于这个情况,HtmlHttpImageGetter有一个压缩图片的方法可以调用,可以进去查看它的公共方法。(不过,我这边显示的图片过大,每张1M左右,并且一下子有几十张,即使设置了压缩图片,还是会导致OOM问题,目前还没解决,有大神知道咋弄的,拜托指点一下,非常感谢!)

对了,这个第三方插件的基本用法,点击上面的连接,进去一看就知道了,很简单。

3、第三种,是我没办法的情况下想的:把html标签里的内容利用正则表达式拿出来,其中,文本内容用一个TextView代替,<img>标签图片用一个ImageView代替,其他相关的标签自行选择替换。说白了,就是创建一个个的TextView以及ImageView填充到布局里(LinearLayout之类的)。要说明的是:其中图片显示用Glide来实现。目前我这边测试的情况还是可以的,加载的速度非常快,也没因内存问题导致APP崩溃。

/**
 * 格式化html标签
 * @param content
 * @return
 */
public static String addSpecialCharToString(String content) {
    content = content.replace("<", "##<");
    content = content.replace(">", ">##");
    content = content.replace("####", "##");
    return content;
}

/**
 * 正则获取img标签中的图片的URL
 * @param imgHtml
 * @return
 */
public static String regGetImageUrl(String imgHtml) {
    Pattern pat = Pattern.compile("(.src=)(.+?)(style=.)");
    Matcher m = pat.matcher(imgHtml);
    if(m.find()){
        return m.group(2);
    }
    return null;
}

目前,我用到的是以上3种,大家根据自己的情况选择。另外,第二种那个,有哪个大神知道咋弄的,拜托帮忙指点一下,再次感谢!

 

 

相关文章