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图片实现图文混排相关推荐

  1. android 字符串拼接 drawable文件,【Android】android开发之文字拼接图片,图文混排...

    前言 需求:给一个字符串拼接上一个"全国"标签,需要一直跟在文字后面. ui图: 想法: 采用spannable的方法给文字后面添加图片. 正文 1.写一个xml当"全国 ...

  2. mysql emoy表情_GitHub - PandaQAQ/PandaEmoView: emoji gif 表情图文混排,仿微信表情输入...

    该库具有以下特点: 支持 emoji 表情图片 支持 gif 动态表情输入显示 支持单张贴图表情(与微信收藏表情一致) 支持题图表情库的添加删除 效果图: 快速使用 引入库 compile 'com. ...

  3. TextView图文混排,显示添加的图片,三种常用方法,亲测

    图文混排,文字就不说了,主要是显示图片的方法 1.TextView使用ImageSpan显示图片 [java] view plaincopy <span style="font-siz ...

  4. android textview 添加图片大小,Android_Android中使用TextView实现图文混排的方法,向TextView或EditText中添加图像比 - phpStudy...

    Android中使用TextView实现图文混排的方法 向TextView或EditText中添加图像比直接添加文本复杂一点点,需要用到标签. 只有一个src属性,该属性原则上应该指向一个图像地址或可 ...

  5. 安卓直接展示html,Android textView展示html图片,实现图文混排,点击查看大图片

    Android textView展示html图片,实现图文混排,点击查看大图片 最近要展示html在textView上,实现图文混排,并且图片可以点击放大,所以去研究了一下,效果图如下: 我们知道te ...

  6. word图文混排复制到UEditor图片不显示

    word图片转存,是指UEditor为了解决用户从word中复制了一篇图文混排的文章粘贴到编辑器之后,word文章中的图片数据无法显示在编辑器中,也无法提交到服务器上的问题而开发的一个操作简便的图片转 ...

  7. TextView + Spanned实现图文混排以及图片点击交互

    最近要实现图文混排的需求,webview过大,所以想到了用SpannableStringBuilder来实现. 不过参考了大量国内文章,大多数是教你如何实现图文混排,并没有提及图片点击交互的.有翻阅了 ...

  8. android 点击图片事件,android图文混排点击事件

    图文混排顾名思义就是把文字和图片混合排列在一起,比较简单的需求我们也可以通过TextView和ImageView配合使用来达到目的,但是遇到稍微复杂一些的情况这种方法就不适用了. 做这样一个按钮: 对 ...

  9. android论文引用图片,Android自动解析html带图片,实现图文混排

    在android中,如何将html代码转换为text,然后显示在textview中呢,有一个简单直接的方法: Java textView.setText(Html.fromHtml(content)) ...

最新文章

  1. verify https android,信任https
  2. 号称能自动编程60年,“进化计算”究竟进化到哪一步了?
  3. S2-045漏洞利用工具解决方案
  4. 数据库的内连接和外连接区别?
  5. DL之DNN优化技术:DNN中参数初始化【Lecun参数初始化、He参数初始化和Xavier参数初始化】的简介、使用方法详细攻略
  6. 1.2.1 计算机硬件的基本组成
  7. MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表)
  8. android-verticalseekbar——Android可视化SeekBar类库
  9. axios vue 加载效果动画_vue+axios+element ui 实现全局loading加载示例
  10. 细说说傲腾与哈娜的那些事儿
  11. Rekit Studio简介:用于React和Redux开发的真实IDE
  12. 找出字符串数组中的等于某字符串的所有索引位置
  13. Linux.cisico router, pfsense 学习笔记
  14. 操作系统数据结构知识点总结2
  15. 数据结构与算法介绍与学习路线
  16. 你永远赢不了“凯利公式”
  17. 【Matlab代码】Sierpinsk地毯
  18. SPDA-CNN:Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition
  19. Day18 洛谷P1321 单词覆盖还原
  20. OpenCV | 直线拟合fitline函数(Python)

热门文章

  1. linux 系统 DeepIn 安装网卡驱动RTL8812BU
  2. matlab弹道仿真,基于Matlab和Simulink的导弹弹道仿真与应用
  3. 入职外包公司一年,人废了
  4. 框架安全CVE复现DjangoFlaskNode.JSJQuery
  5. 计算机组装模拟网址,装机模拟器PC Building Simulator-电玩之家
  6. 使用CH340串口模块对STM32进行程序下载
  7. CF915C Permute Digits(搜索+剪枝)
  8. Shell脚本中读取文件每一行的方法总结
  9. MKS SERVO42C 闭环步进电机 使用说明(一)安装闭环PCBA
  10. 2022.05 ESP32 空中升级 OTA