TextView显示Gif图片实现图文混排
TextView显示Gif图片实现图文混排
首先我们使用的html,解析成Spanned,然后设置Span来实现图文混排的,代码如下:
public static Drawable getUrlDrawable(String source, TextView mTextView) {GlideImageGetter imageGetter = new GlideImageGetter(mTextView.getContext(),mTextView);return imageGetter.getDrawable(source);}public static void setImageText(TextView tv){String html ="<p dir=\"ltr\"><img src=\"http://p1.duyao001.com/image/article/a838e283f2b5d7cc45487c5fd79f84cb.gif\"><img src=\"http://statics.zhid58.com/Fqr9YXHd20fDOqil4nLAbBhNBw0A\"><br><br><img src=\"http://statics.zhid58.com/FufBg05KGCLypIvrYgjaXnTWySUS\"><br><br>OK咯木木木立刻哦lol额JOJO图谋女女look女女诺克各地测了测理论啃了了乐克乐克人咯咯JOJO图谋木木木木木木女女哦咯口头摸头LED可口女女LED咳咳JOJO咯JOJO咳咳咯科技JOJO扣女哦lol欧诺扣女<a href=\"http://www.taobao.com\">http://www.taobao.com</a> jvjvjvjv jgjvvjjvjce<br><br><img src=\"http://statics.zhid58.com/FkBcKMiLfzGfUpSb0bge4x-gIqWw\"><br></p><br>";Spanned htmlStr = Html.fromHtml(html);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {tv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);tv.setTextIsSelectable(true);}tv.setText(htmlStr);tv.setMovementMethod(LinkMovementMethod.getInstance());CharSequence text = tv.getText();if(text instanceof Spannable){int end = text.length();Spannable sp = (Spannable)tv.getText();URLSpan[] urls=sp.getSpans(0, end, URLSpan.class);ImageSpan[] imgs = sp.getSpans(0,end,ImageSpan.class);StyleSpan[] styleSpens = sp.getSpans(0,end,StyleSpan.class);ForegroundColorSpan[] colorSpans = sp.getSpans(0,end,ForegroundColorSpan.class);SpannableStringBuilder style=new SpannableStringBuilder(text);style.clearSpans();for(URLSpan url : urls){style.setSpan(url,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor("#FF12ADFA"));style.setSpan(colorSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}for(ImageSpan url : imgs){ImageSpan span = new ImageSpan(getUrlDrawable(url.getSource(),tv),url.getSource());style.setSpan(span,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}for(StyleSpan styleSpan : styleSpens){style.setSpan(styleSpan,sp.getSpanStart(styleSpan),sp.getSpanEnd(styleSpan),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}for(ForegroundColorSpan colorSpan : colorSpans){style.setSpan(colorSpan,sp.getSpanStart(colorSpan),sp.getSpanEnd(colorSpan),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}tv.setText(style);}}
上面代码图片展示是通过ImageSpan来实现的,但默认的图片展示的gif图片是静态取第一帧图片,我们可以在获取图片时候使用Glide,来实现播放gif,glide是图片加载库,这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。Glide和Picasso有90%的相似度,准确的说,就是Picasso的克隆版本。但是在细节上还是有不少区别的。而且性能上更加优化。
把Glide引入到我们项目中,然后在创建UrlDrawable 和 GlideImageGetter
代码可以参考:RichTextView
方法调用就是
ImageTextUtil.setImageText(tv,html);
TextView显示Gif图片实现图文混排相关推荐
- android 字符串拼接 drawable文件,【Android】android开发之文字拼接图片,图文混排...
前言 需求:给一个字符串拼接上一个"全国"标签,需要一直跟在文字后面. ui图: 想法: 采用spannable的方法给文字后面添加图片. 正文 1.写一个xml当"全国 ...
- mysql emoy表情_GitHub - PandaQAQ/PandaEmoView: emoji gif 表情图文混排,仿微信表情输入...
该库具有以下特点: 支持 emoji 表情图片 支持 gif 动态表情输入显示 支持单张贴图表情(与微信收藏表情一致) 支持题图表情库的添加删除 效果图: 快速使用 引入库 compile 'com. ...
- TextView图文混排,显示添加的图片,三种常用方法,亲测
图文混排,文字就不说了,主要是显示图片的方法 1.TextView使用ImageSpan显示图片 [java] view plaincopy <span style="font-siz ...
- android textview 添加图片大小,Android_Android中使用TextView实现图文混排的方法,向TextView或EditText中添加图像比 - phpStudy...
Android中使用TextView实现图文混排的方法 向TextView或EditText中添加图像比直接添加文本复杂一点点,需要用到标签. 只有一个src属性,该属性原则上应该指向一个图像地址或可 ...
- 安卓直接展示html,Android textView展示html图片,实现图文混排,点击查看大图片
Android textView展示html图片,实现图文混排,点击查看大图片 最近要展示html在textView上,实现图文混排,并且图片可以点击放大,所以去研究了一下,效果图如下: 我们知道te ...
- word图文混排复制到UEditor图片不显示
word图片转存,是指UEditor为了解决用户从word中复制了一篇图文混排的文章粘贴到编辑器之后,word文章中的图片数据无法显示在编辑器中,也无法提交到服务器上的问题而开发的一个操作简便的图片转 ...
- TextView + Spanned实现图文混排以及图片点击交互
最近要实现图文混排的需求,webview过大,所以想到了用SpannableStringBuilder来实现. 不过参考了大量国内文章,大多数是教你如何实现图文混排,并没有提及图片点击交互的.有翻阅了 ...
- android 点击图片事件,android图文混排点击事件
图文混排顾名思义就是把文字和图片混合排列在一起,比较简单的需求我们也可以通过TextView和ImageView配合使用来达到目的,但是遇到稍微复杂一些的情况这种方法就不适用了. 做这样一个按钮: 对 ...
- android论文引用图片,Android自动解析html带图片,实现图文混排
在android中,如何将html代码转换为text,然后显示在textview中呢,有一个简单直接的方法: Java textView.setText(Html.fromHtml(content)) ...
最新文章
- verify https android,信任https
- 号称能自动编程60年,“进化计算”究竟进化到哪一步了?
- S2-045漏洞利用工具解决方案
- 数据库的内连接和外连接区别?
- DL之DNN优化技术:DNN中参数初始化【Lecun参数初始化、He参数初始化和Xavier参数初始化】的简介、使用方法详细攻略
- 1.2.1 计算机硬件的基本组成
- MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表)
- android-verticalseekbar——Android可视化SeekBar类库
- axios vue 加载效果动画_vue+axios+element ui 实现全局loading加载示例
- 细说说傲腾与哈娜的那些事儿
- Rekit Studio简介:用于React和Redux开发的真实IDE
- 找出字符串数组中的等于某字符串的所有索引位置
- Linux.cisico router, pfsense 学习笔记
- 操作系统数据结构知识点总结2
- 数据结构与算法介绍与学习路线
- 你永远赢不了“凯利公式”
- 【Matlab代码】Sierpinsk地毯
- SPDA-CNN:Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition
- Day18 洛谷P1321 单词覆盖还原
- OpenCV | 直线拟合fitline函数(Python)
热门文章
- linux 系统 DeepIn 安装网卡驱动RTL8812BU
- matlab弹道仿真,基于Matlab和Simulink的导弹弹道仿真与应用
- 入职外包公司一年,人废了
- 框架安全CVE复现DjangoFlaskNode.JSJQuery
- 计算机组装模拟网址,装机模拟器PC Building Simulator-电玩之家
- 使用CH340串口模块对STM32进行程序下载
- CF915C Permute Digits(搜索+剪枝)
- Shell脚本中读取文件每一行的方法总结
- MKS SERVO42C 闭环步进电机 使用说明(一)安装闭环PCBA
- 2022.05 ESP32 空中升级 OTA