android 播放gif会闪,android 播放gif动图
android原生的控件是不支持gif动图播放的,所以这就需要我们自己去自定义控件。网上搜到比较多的控件是gifview,但是呢,这个播放gif的原理是是将gif的每一帧解析成bitmap,然后通过线程去不停的切换图片。这个方法带来的问题是,bitmap是很占用内存的,有时候虽然gif占用的内存不是很大,但是如果帧数很多,再转换成bitmap,好家伙内存呼啦啦的网上涨,有时候两三张,甚至一张内存就要溢出了,后来这种方法就被我放弃了,因为我们的项目中gif动图是放在listview中的,这种方法肯定不行,后来 在github上发现了一个开源项目android-gif-drawable
地址:https://github.com/koral--/android-gif-drawable
这个方法使用了jni技术,使得占用的内存相对来说比较优秀,下面就来介绍他的用法吧。
首先就是要下载jar包,解压之后有下面几个文件:
classes.jar就是我们需要的jar包了,直接放到android项目中的libs文件夹中,光有这一步 我们的准备工作还没有做好哦,下面打开jni文件夹有如下文件:
废话不多说,直接复制到libs文件中,好的,准备工作做完了,下面就可以调用该类库进行gif图片的播放了。
使用要在你的布局文件中,定义该控件
首先要想让控件能播放gif需要先给控件一个GifDrawable,下面是官方文档给的gifdrawable构造函数说明:
//asset file
GifDrawable gifFromAssets = new GifDrawable( getAssets(), "anim.gif" );
//resource (drawable or raw)
GifDrawable gifFromResource = new GifDrawable( getResources(), R.drawable.anim );
//byte array
byte[] rawGifBytes = ...
GifDrawable gifFromBytes = new GifDrawable( rawGifBytes );
//FileDescriptor
FileDescriptor fd = new RandomAccessFile( "/path/anim.gif", "r" ).getFD();
GifDrawable gifFromFd = new GifDrawable( fd );
//file path
GifDrawable gifFromPath = new GifDrawable( "/path/anim.gif" );
//file
File gifFile = new File(getFilesDir(),"anim.gif");
GifDrawable gifFromFile = new GifDrawable(gifFile);
//AssetFileDescriptor
AssetFileDescriptor afd = getAssets().openFd( "anim.gif" );
GifDrawable gifFromAfd = new GifDrawable( afd );
//InputStream (it must support marking)
InputStream sourceIs = ...
BufferedInputStream bis = new BufferedInputStream( sourceIs, GIF_LENGTH );
GifDrawable gifFromStream = new GifDrawable( bis );
//direct ByteBuffer
ByteBuffer rawGifBytes = ...
GifDrawable gifFromBytes = new GifDrawable( rawGifBytes ); 好的下面直接调用setImageDrawable就行了。这个jar包给的方法还是很多的,大家根据官方文档,在结合自己的需求去学习使用吧。
android 播放gif会闪,android 播放gif动图相关推荐
- android编程中添加gif,Android应用开发之【Android】使用android-gif-drawable包加载GIF动图...
本文将带你了解Android应用开发之[Android]使用android-gif-drawable包加载GIF动图,希望本文对大家学Android有所帮助. [导包] 首先需要导入android-g ...
- 小程序影藏溢出的gif_如何在Android手机上快速实现视频转GIF动图呢?
毫无疑问,Android是目前使用最广泛的手机系统.GIF很有趣,并且比视频占用更少的存储容量.本文将向您介绍如何在Android手机上快速转GIF动图的多种方法. [官网]万兴优转 - 顶尖音视频格 ...
- html gif循环播放,Easy GIF Animator 7设置gif动图循环播放次数的方法
gif动态图在我们的生活中是十分常见的,很多小伙伴们在使用聊天工具的时候都会使用一些 动态的表情包,这些表情包文件给我们的了解增加了很多的乐趣.不知道大家在使用这些表情包的时候是否有发现这样的一种情况 ...
- android 视频转表情包,视频转gif动图怎么转?一款能制作表情包的软件,年轻人很爱用...
视频转gif动图怎么转?现如今,很多年轻人都喜欢用表情包来进行社交聊天.迅捷视频转换器功能强大,是一款可以制作出有趣表情包的软件.如果你刚好也想制作出自己喜欢的表情包,继续往下看会得到满意答案哦. 打 ...
- Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲)
Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲) 准备 1.储存在raw文件夹 2. ...
- Android实现音乐播放器,Service后台播放Notification控制播放状态
本音乐播放器的功能: 1.实现访问手机本地的.mp3音乐文件: 2.在主页中将访问的数据显示出来(这里简单点用ListView,用RecycleView当然也可以): 3.在播放音乐页面实现上一首.下 ...
- Android中Video的三种播放方式的实现
在Android中,我们有三种方式来实现视频的播放. 1.使用其自带的播放器.指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型. 2.使用VideoView来 ...
- Android之一起制作简易唱片播放器
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/50789666 本文出自:[顾林海的博客] ####扯蛋篇 这几由于智齿 ...
- 简单android音乐播放器课程设计,android音乐播放器课程设计报告.doc
android音乐播放器课程设计报告 android音乐播放器课程设计报告 基于Android音乐播放器的设计与实现 滨江学院 <移动通信程序设计> 课程设计 题 目 院 系 专 业学生姓 ...
- Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
Android应用--简.美音乐播放器获取专辑图片(自定义列表适配器) 2013年7月3日简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词 ...
最新文章
- 收集的一些操作系统面试题
- javascript中的事件冒泡、事件捕获和事件执行顺序
- pythonpandas用sql查询数据表_pandas从数据库读取数据
- memcached+keepalived+magent高群集
- jdbc连接sqlserver,mysql,oracle
- html第一章咖啡作业,CSS基础选择器温故-1 - 怪诞咖啡
- 大数据技术在物流中的应用
- [悟] 因上努力,果上随缘(转)
- (转)STM32学习笔记(3):系统时钟和SysTick定时器
- CDR插件开发之Addon插件004 - VS2022开发环境简介及个性化配置
- 基于Springboot实现英语在线学习系统
- 把握人类的八大本能,让你拥有“营销作弊器”
- IOS 5 自定义导航条背景图片
- 三星6.0系统机器(亲测有效)激活XPOSED框架的流程
- LATEX使用 图文混排,文字环绕插图
- RTL8821CS移植过程记录
- 新锐任务宝推广渠道推荐
- win10系统要求配置_win10的配置要求是什么?对电脑硬件有什么要求?
- NOMSQL数据库之Mongodb
- visual studio code无法生成可执行文件