Android GIF图片显示
在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图片显示相关推荐
- Android ImageView图片显示点击背景切换
为什么80%的码农都做不了架构师?>>> 一.介绍 ImageView用来显示任意图像图片,可以自己定义显示尺寸,显示颜色等等. 二.XML属性 android:adjustV ...
- 开发微信小程序,导入使用本地图片,Android手机上测试图片显示空白
微信小程序中,导入使用本地图片,开发时在电脑上显示正常,iOS上也能正常显示,但是在Android上图片显示空白, 如图: 原因:网上查找,说有可能是这些原因 1.image src中的图片地址对英文 ...
- android动态图片适配,android Drawble、Shape实现图像适配和优化
一.屏幕适配说明 在android开发过程中,屏幕适配是一件非常重要的工作,主要原则有以下几点 对于控件而言,尽量不要使用固定的宽度和高度,但推荐使用固定的外边距局和内边距. 对于drawable-x ...
- android 加载显示富文本——TextView显示富文本和WebView显示富文本,WebView显示图片适配屏幕宽度
TextView加载显示 添加依赖 implementation 'com.zzhoujay.richtext:richtext:3.0.8' implementation 'com.zzhoujay ...
- android动态设置文本居中显示图片,Android DrawableTextView图片文字居中显示实例
在我们开发中,TextView设置Android:drawableLeft一定使用的非常多,但Drawable和Text同时居中显示可能不好控制,有没有好的办法解决呢? 小编的方案是通过自定义Text ...
- Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示
功能: 自定义 ImageView 设置显示图片,如果图片的宽与高小于控件的宽与高,就将图片设置显示到控件的中央, 如果图片的宽与高有一项大于控件的宽与高,那么就将图片进行缩放显示,两者者是显示在控件 ...
- tomcat给android发图片,一步一步学会http获取tomcat服务端的图片,在android客户端显示...
最简单的利用服务端来下载图片到客户端上面,刚开始接触,记录一下,同时希望帮助到新人. 在看本篇文章之前,你可以先看下这两篇文章 加载web项目时报的错误:Tomcat version 6.0 only ...
- android webview 太大,Android应用开发之Android WebView加载图片显示过大的处理教程(代码教程)...
本文将带你了解Android应用开发Android WebView加载图片显示过大的处理教程(代码教程),希望本文对大家学Android有所帮助. Webview加载图片时,经常会遇到图片显示不符合 ...
- android图片显示代码,Android图片处理:识别图像方向并显示(示例代码)
在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走:1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. 一 ...
- Android用ImageView显示本地和网上的图片
ImageView是Android程序中经常用到的组件,它将一个图片显示到屏幕上. 在UI xml定义一个ImageView如下: public void onCreate(Bundle savedI ...
最新文章
- ios软件商店上架老被打回_安卓神级特殊站点+苹果下载神器上架
- 我在交大的数学建模经验!
- 关于可观察性的三大支柱,你应该了解这些
- python算法详解张玲玲电子版_算法之路该如何学习?
- android 更改edittext内容,Android如何实时更改edittext的内容
- 产品经理经验谈100篇(四)-B端交互设计规范
- 安卓10不支持qmc解码_国产定制ROM玩烂了的功能,最新安卓11原生系统确定不支持...
- Python代码转EXE程序
- android wifi控制手机屏幕,安卓手机屏幕无线投射到电脑+反向控制
- 电动汽车充电解决方案领导品牌智充科技获壳牌资本投资;安百拓完成收购测井服务公司Kinetic | 能动...
- 悄咪咪后台定时截图工具
- 微信小游戏教程(三) 新手教程
- 数字孪生技术在智慧城市建设中有哪些应用?
- UPC-5094 - Faulty Robot - 搜索
- Linux王冠-RHCE认证概况及费用一览
- 五大学科竞赛(一)介绍
- WIN10锁屏久了宕机(死机)解决方案
- enovia之Spinner开发
- [转]浅析360的危害 我为什么推荐卸载360
- C语言 getchar()函数详解
热门文章
- webdriver爬虫#document问题
- 互联网热点自动获取工具的实现
- 143个相见恨晚的排行榜网站,总有一个用得着!
- X16 - 999、中国近代史纲要、03708
- 计算机其它离的360云盘,win7系统将360云盘文件快速转移到百度云盘的方法
- 从头再学java系列之char和Character的区别及Character的源码分析
- js中的浅拷贝与深拷贝
- vm安装win xp镜像遇到的安装问题之一
- postfix反垃圾邮件说明
- Java读取OPC DA报错:org.jinterop.dcom.common.JIException: Access is denied. [0x80070005]