android 记一次富文本加载之路
项目中经常涉及到富文本的加载,后台管理端编辑器生成的一段html 代码要渲染到移动端上面,一种方法是前端做成html页面,放到服务器上,移动端这边直接webView 加载url即可,还有一种后台接口直接返回这段html富文本的,String类型的,移动端直接加载的;具体的需求按实际情况而定,webview直接加载url的就不说了,这里主要说说关于直接加载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 直接加载
webView.loadDataWithBaseURL(null,txt,"text/html","UTF-8",null);
如果是textView 有setText(Html.fromHtml(txt))
方法,但是这种加载方式,图片无法在textView显示。
如果非要使用textView 加载...
第三方库加载富文本
这里我使用的是RichText 第三方库
implementation ('com.zzhoujay.richtext:richtext:3.0.7'){ exclude group: 'com.android.support' }
同时排除了support包的冲突,使用上
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使用
](https://www.manjiexiang.cn/blog/2/detail/),通过这种方式将数据传递给前端,同时可以监听到js的方法调用。
这种方式更加适用于一个页面模板可以反复使用的,后台返回不同的数据进行加载。一个场景就是 viewpager里面的每个fragment页面结构相同,如果使用url加载,每个fragment里的webview去加载一个url,这种在体验上就不是很优雅,而使用html文件加载的方式,后台可以返回list 数据给移动端,对应的去用webview加载本地文件,把各项的数据传给前端展示,加载渲染的速度上会快点。当然如果原生的可以直接渲染页面的,优先原生的。
如果是那种单页面,只是浏览功能的,类似于 "关于我们" 那种页面可以直接用url加载的。
这篇文章主要介绍的是关于html 加载的,目前我们使用的是第三种方式的,不同的需求场景得根据各个项目来定的,关于第三种加载 html 文件的,后续再写一篇文章介绍移动端与前端交互的,而且我们加载的富文本内容相对的也不一样。
欢迎关注我的个人博客:https://www.manjiexiang.cn/
更多精彩欢迎关注微信号:春风十里不如认识你
一起学习,一起进步,欢迎上车,有问题随时联系,一起解决!!!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 分享微信小程序失败二三事
小菜这两天接入分享微信小程序的入口,本来很简单的几行代码,可最后搞得我头昏脑胀。微信小程序官网上的接入方式已经说的非常清楚,可在小菜自己实践的过程中,却始终不成功。其实真的很简单,而卡住了还真的是很头疼,因此特意记录一下。 集成方式 build.gradle 中添加 compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'; 在需要调用分享功能的入口添加如下代码,如果配置参数都正常的话基本就可以正常分享了: public void shareToMiniWX() { WXMiniProgramObject miniProgramObj = new WXMiniProgramObject(); miniProgramObj.webpageUrl = "http://www.qq.com"; // 兼容低版本的网页链接 miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;// 正式版:0,测试版:1,体验版:2 mini...
- 下一篇
Android自定义View之DashBoard(仪表盘)
前言 Android自定义View是Android初中级开发工程师向高级工程师进阶所必须掌握的一块内容,其重要性不言而喻。接下来的一段时间,我会连续出几篇跟自定义View相关的文章,从易到难,跟大家一起学习Android自定义View。本文讲一个Android很简单的View——DashBoard(仪表盘),以这个例子带大家去学习自定义View的基本绘制,让大家学会自定义View,并最终掌握。注:本文的Demo在文章的最后 必须要掌握的几个点 在开始我们的绘制DashBoard之前,有几个点是必须要掌握的,这些是绘制的基础,也是前提。 Paint 自定义View的过程就是一个绘制的过程,而绘制就好像我们画画一样,而画画就必须要会画笔,Paint就是我们的画笔。 Paint 类的几个最常用的方法。具体是: Paint.setStyle(Style style) 设置绘制模式 Paint.setColor(int color) 设置颜色 Paint.setStrokeWidth(float width) 设置线条宽度 Paint.setTextSize(float textSize) 设置...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2整合Thymeleaf,官方推荐html解决方案