android 记一次富文本加载之路

文章连接:https://mp.weixin.qq.com/s/69TRkmFL1aNuSqfw4ULMJwcss

项目中常常涉及到富文本的加载,后台管理端编辑器生成的一段html 代码要渲染到移动端上面,一种方法是前端作成html页面,放到服务器上,移动端这边直接webView 加载url便可,还有一种后台接口直接返回这段html富文本的,String类型的,移动端直接加载的;具体的需求按实际状况而定,webview直接加载url的就不说了,这里主要说说关于直接加载html的。html

一段简单的html代码前端

private String txt = "<div>\n" +
            "<a style=\"font-size: 3s0px\" href=\"https://www.manjiexiang.cn/\">程序猿TX</a>\n" +
            "</div>\n" +
            "<img src=\"https://www.manjiexiang.cn/upload/file/2018/05/01/qrcode_for_gh_4185bf56352c_258_1.jpg\">\n";

原生webView 加载富文本

原生的webView 直接加载android

webView.loadDataWithBaseURL(null,txt,"text/html","UTF-8",null);

若是是textView 有setText(Html.fromHtml(txt))方法,可是这种加载方式,图片没法在textView显示。
若是非要使用textView 加载...git

第三方库加载富文本

这里我使用的是RichText 第三方库github

implementation ('com.zzhoujay.richtext:richtext:3.0.7'){
        exclude group: 'com.android.support'
}

同时排除了support包的冲突,使用上web

RichText.initCacheDir(this);

RichText.from(txt).into(tv);

更多的方法能够去github上查看,这种方式图片是能够加载的,可是css的样式是无法呈现的。服务器

以上的两种方式按本身的需求来进行使用的,试用于后台接口直接返回数据给移动端进行加载的。微信

加载html文件

通常的webView直接加载url体验上没那么流畅,相对的加载html文件会好点。后台依旧返回html数据给移动端,前端负责写html 文件模板,android将html文件放在assets 文件夹下面,经过webView.loadUrl("file:///android_asset/**.html")加载,至于数据,就是移动端与前端的交互了,以前推荐过一个三方库 android与js的交互之jsbridge使用 ,经过这种方式将数据传递给前端,同时能够监听到js的方法调用。
这种方式更加适用于一个页面模板能够反复使用的,后台返回不一样的数据进行加载。一个场景就是 viewpager里面的每一个fragment页面结构相同,若是使用url加载,每一个fragment里的webview去加载一个url,这种在体验上就不是很优雅,而使用html文件加载的方式,后台能够返回list 数据给移动端,对应的去用webview加载本地文件,把各项的数据传给前端展现,加载渲染的速度上会快点。固然若是原生的能够直接渲染页面的,优先原生的。
若是是那种单页面,只是浏览功能的,相似于 "关于咱们" 那种页面能够直接用url加载的。编辑器

这篇文章主要介绍的是关于html 加载的,目前咱们使用的是第三种方式的,不一样的需求场景得根据各个项目来定的,关于第三种加载 html 文件的,后续再写一篇文章介绍移动端与前端交互的,并且咱们加载的富文本内容相对的也不同。

欢迎关注个人我的博客:https://www.manjiexiang.cn/

更多精彩欢迎关注微信号:春风十里不如认识你
一块儿学习,一块儿进步,欢迎上车,有问题随时联系,一块儿解决!!!

相关文章
相关标签/搜索