在Android开发中,对于.gif格式的动态图片,如果使用ImageView(setImageBitmap、setImageDrawable、setImageResource等)显示gif图片是没有动态效果,只能显示静态图片。

在需要显示gif图片中,推荐以下两种显示方式:

1、Glide

2、GifImageView


不得不说,Glide真的是一款强大的加载、处理图片的开源框架。

使用Glide,首先需要将这个库引入到项目中,在app/build.gradle文件当中添加如下依赖:

dependencies {implementation 'com.github.bumptech.glide:glide:4.4.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'
}

此处引入的是Gilde 4.4.0版本,官方GitHub上有更新了最新的版本,如需Gilde最新的版本请到官方上查看最新版本。

引入Glide v4需要仔细阅读官方文档说明:

引入Gilde后,调用方法:

Glide.with(this).load("gif图片URL").into(ImageView);

若加载了gif图不想动态显示,可调用:

Glide.with(this).asBitmap().load("gif图片URL").into(ImageView);

具体查看Glide官方中文文档。


GifImageView是一款可对gif图进行显示以及可对gif图暂停显示的框架,其功能就类似于视频播放(具有播放、暂停功能)。GifImageView的原理是解析gif图,以根据gif图的图片帧进行帧之间的循环播放显示,以此达到播放显示gif图片的动态效果。

GifImageView在对gif图进行解析过程中,先从gif图的头开始进行解码,从gif图头部开始获取各个时间帧以及该时间帧的图片信息,主要核心类有:GifDecoder、GifFrame、GifHeader、GifHeaderParser、GifImageDecoder、SimpleBitmapProvider。

通过对gif图进行解析后,由自定义ImageView的GifImageView进行显示,调用方法:

//使用方法一:显示本地gif图
GifImageView gifImageView = (GifImageView) findViewById(R.id.iv_gif);
gifImageView.setScaleType(ImageView.ScaleType.CENTER);
try {gifImageView.setBytes( Utils.streamToBytes(getResources().openRawResource(R.drawable.gif)));} catch (IOException e) {e.printStackTrace();}
gifImageView.startAnimation();//使用方法二:显示从网络上获取的gif图
new GifDataDownloader() {@Overrideprotected void onPostExecute(final byte[] bytes) {gifImageView.setBytes(bytes);gifImageView.startAnimation();}
}.execute("gif图的URL地址");

gif图片播放及暂停所提供的方法有:

gifImageView.setBytes(byte[] bytes); //传入gif图片内容,以byte[]形式传入gifImageView.startAnimation(); //开始播放gif图gifImageView.stopAnimation(); //暂停播放gif图gifImageView.isAnimating(); //判断gif图是否正在播放中

以上只是对GifImageView开源框架的实现原理作了简单的介绍,以及给出了GifImageView开源框架的使用方法,其具体的实现原理有兴趣可以研究一下,GifImageView作者:felipecsl

Android GIF图片显示相关推荐

  1. Android ImageView图片显示点击背景切换

    为什么80%的码农都做不了架构师?>>>    一.介绍 ImageView用来显示任意图像图片,可以自己定义显示尺寸,显示颜色等等. 二.XML属性 android:adjustV ...

  2. 开发微信小程序,导入使用本地图片,Android手机上测试图片显示空白

    微信小程序中,导入使用本地图片,开发时在电脑上显示正常,iOS上也能正常显示,但是在Android上图片显示空白, 如图: 原因:网上查找,说有可能是这些原因 1.image src中的图片地址对英文 ...

  3. android动态图片适配,android Drawble、Shape实现图像适配和优化

    一.屏幕适配说明 在android开发过程中,屏幕适配是一件非常重要的工作,主要原则有以下几点 对于控件而言,尽量不要使用固定的宽度和高度,但推荐使用固定的外边距局和内边距. 对于drawable-x ...

  4. android 加载显示富文本——TextView显示富文本和WebView显示富文本,WebView显示图片适配屏幕宽度

    TextView加载显示 添加依赖 implementation 'com.zzhoujay.richtext:richtext:3.0.8' implementation 'com.zzhoujay ...

  5. android动态设置文本居中显示图片,Android DrawableTextView图片文字居中显示实例

    在我们开发中,TextView设置Android:drawableLeft一定使用的非常多,但Drawable和Text同时居中显示可能不好控制,有没有好的办法解决呢? 小编的方案是通过自定义Text ...

  6. Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示

    功能: 自定义 ImageView 设置显示图片,如果图片的宽与高小于控件的宽与高,就将图片设置显示到控件的中央, 如果图片的宽与高有一项大于控件的宽与高,那么就将图片进行缩放显示,两者者是显示在控件 ...

  7. tomcat给android发图片,一步一步学会http获取tomcat服务端的图片,在android客户端显示...

    最简单的利用服务端来下载图片到客户端上面,刚开始接触,记录一下,同时希望帮助到新人. 在看本篇文章之前,你可以先看下这两篇文章 加载web项目时报的错误:Tomcat version 6.0 only ...

  8. android webview 太大,Android应用开发之Android WebView加载图片显示过大的处理教程(代码教程)...

    本文将带你了解Android应用开发Android  WebView加载图片显示过大的处理教程(代码教程),希望本文对大家学Android有所帮助. Webview加载图片时,经常会遇到图片显示不符合 ...

  9. android图片显示代码,Android图片处理:识别图像方向并显示(示例代码)

    在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走:1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. 一 ...

  10. Android用ImageView显示本地和网上的图片

    ImageView是Android程序中经常用到的组件,它将一个图片显示到屏幕上. 在UI xml定义一个ImageView如下: public void onCreate(Bundle savedI ...

最新文章

  1. ios软件商店上架老被打回_安卓神级特殊站点+苹果下载神器上架
  2. 我在交大的数学建模经验!
  3. 关于可观察性的三大支柱,你应该了解这些
  4. python算法详解张玲玲电子版_算法之路该如何学习?
  5. android 更改edittext内容,Android如何实时更改edittext的内容
  6. 产品经理经验谈100篇(四)-B端交互设计规范
  7. 安卓10不支持qmc解码_国产定制ROM玩烂了的功能,最新安卓11原生系统确定不支持...
  8. Python代码转EXE程序
  9. android wifi控制手机屏幕,安卓手机屏幕无线投射到电脑+反向控制
  10. 电动汽车充电解决方案领导品牌智充科技获壳牌资本投资;安百拓完成收购测井服务公司Kinetic | 能动...
  11. 悄咪咪后台定时截图工具
  12. 微信小游戏教程(三) 新手教程
  13. 数字孪生技术在智慧城市建设中有哪些应用?
  14. UPC-5094 - Faulty Robot - 搜索
  15. Linux王冠-RHCE认证概况及费用一览
  16. 五大学科竞赛(一)介绍
  17. WIN10锁屏久了宕机(死机)解决方案
  18. enovia之Spinner开发
  19. [转]浅析360的危害 我为什么推荐卸载360
  20. C语言 getchar()函数详解

热门文章

  1. webdriver爬虫#document问题
  2. 互联网热点自动获取工具的实现
  3. 143个相见恨晚的排行榜网站,总有一个用得着!
  4. X16 - 999、中国近代史纲要、03708
  5. 计算机其它离的360云盘,win7系统将360云盘文件快速转移到百度云盘的方法
  6. 从头再学java系列之char和Character的区别及Character的源码分析
  7. js中的浅拷贝与深拷贝
  8. vm安装win xp镜像遇到的安装问题之一
  9. postfix反垃圾邮件说明
  10. Java读取OPC DA报错:org.jinterop.dcom.common.JIException: Access is denied. [0x80070005]