android如何添加gif,Android加载Gif和ImageView的通用解决方案:android-gif-drawable(1)...
Android加载Gif和ImageView的通用解决方案:android-gif-drawable(1)
Android自己的ImageView或者View不能直接加载运行Gif图片,如果要在一个Android的ImageView中加载一个gif图片资源,则需要通过其他途径实现,我之前写了一些关于如何在Android中加载gif图片的文章:
文章1,《基于开源框架Glide加载Gif资源图到Android ImageView中》链接地址:http://blog.csdn.net/zhangphil/article/details/45561983
文章2,《Android加载Gif图片的一般方法:Movie实现》链接地址:http://blog.csdn.net/zhangphil/article/details/50441944
文章1,2虽然解决了如何加载gif图片资源的问题,但仍存在一个问题:需要事先知道该资源是何图片资源,并假定该资源就是gif图片资源。
这在有些需求开发中或许不恰当,因为有些时候,仅仅一个View容器,需要它呈现和装载多种图片类型不管是gif或者png,而不需要事先知道它是何种图片类型。
android-gif-drawable就是这样一种通用的gif加载解决方案。android-gif-drawable在github上的官方主页地址:
针对Eclipse,android-gif-drawable提供了专门的包(包里含有需要的库资源和demo代码)。页面链接地址:https://github.com/koral--/android-gif-drawable-eclipse-sample ,将该代码整体全部下载,下载后是一个完整的eclipse项目,编译器如果报错则可能需要导入相关的support-v4包,已经把jdk切换到1.7及以上。然后就可以直接运行这个demo项目工程了。
android-gif-drawable使用简单,把GifImageView当作普通的View写进布局文件中,然后加载gif动图资源或者普通的png、jpeg图资源装载进去即可。
简单给出一个用GifImageView加载gif动图以及加载普通的png图片的例子。
先写布局文件activity_main.xml:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical" >
android:id="@+id/gif1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:id="@+id/gif2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
上层Java代码:
package zhangphil.gif;
import android.app.Activity;
import android.os.Bundle;
import pl.droidsonroids.gif.GifDrawable;
import pl.droidsonroids.gif.GifImageView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GifImageView gifImageView1 = (GifImageView) findViewById(R.id.gif1);
GifImageView gifImageView2 = (GifImageView) findViewById(R.id.gif2);
try {
// 如果加载的是gif动图,第一步需要先将gif动图资源转化为GifDrawable
// 将gif图资源转化为GifDrawable
GifDrawable gifDrawable = new GifDrawable(getResources(), R.drawable.loading);
// gif1加载一个动态图gif
gifImageView1.setImageDrawable(gifDrawable);
// 如果是普通的图片资源,就像Android的ImageView set图片资源一样简单设置进去即可。
// gif2加载一个普通的图片(如png,bmp,jpeg等等)
gifImageView2.setImageResource(R.drawable.ic_launcher);
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果如图所示(上面是一个不停旋转的加载gif动图,下面是一个普通的png图片,即小机器人):
由于https://github.com/koral--/android-gif-drawable-eclipse-sample这个页面下载到的代码针对eclipse推出的项目包中是一个混在一起的项目,实际开发过程中,最好的做法是把依赖的核心代码及资源分离出来,这样达到复用和工程代码结构清晰,我把android-gif-drawable for Eclipse的关键代码抽取分离出来,单独作成一个lib,需要的时候直接导入然后引用即可。
android-gif-drawable for Eclipse在github上的lib包页面地址:
https://github.com/zhangphil/android-gif-drawable-for-Eclipse
使用时候,从这个页面下载完整的lib项目,作为lib导入到eclipse里面,在自己需要的项目中加以引用即可。
附上loading.gif动图:
android如何添加gif,Android加载Gif和ImageView的通用解决方案:android-gif-drawable(1)...相关推荐
- Android 中LayoutInflater(布局加载器)之介绍篇
本文出自博客Vander丶CSDN博客,如需转载请标明出处,尊重原创谢谢 博客地址:http://blog.csdn.net/l540675759/article/details/78099358 前 ...
- android编程中添加gif,Android应用开发之【Android】使用android-gif-drawable包加载GIF动图...
本文将带你了解Android应用开发之[Android]使用android-gif-drawable包加载GIF动图,希望本文对大家学Android有所帮助. [导包] 首先需要导入android-g ...
- 018 Android加固之实现dex加载器
文章目录 Android APK加固-安全人员角度 关于类加载器 类加载器 类加载器的种类和个数 创建类加载实例 类加载器DexClassLoader和PathClassLoader 使用类加载器动态 ...
- 剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)
之前项目中使用Picasso遇到了一个问题:在Android 5.0以上版本的部分手机上使用Picasso加载本地图片会失败.为了解决这个问题,研究了一下Picasso加载和压缩本地图片的流程,才有了 ...
- Android插件化原理—ClassLoader加载机制
前面<Android 插件化原理学习 -- Hook 机制之动态代理>一文中我们探索了一下动态代理 hook 实现了 启动没有在 AndroidManifest.xml 中显式声明的 Ac ...
- android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例
本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...
- Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)...
Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果) 首句依然是那句老话,你懂得! finddreams :(http://blog.csdn.net/finddr ...
- Android中使用x5内核加载网页的实现
前言 联系方式 背景 SDK下载 SDK集成 使用 代码实现 前言 由于是使用的腾讯浏览服务,所以这里大部分介绍的是官网的一些东西,不过自己会做一些复杂使用部分的实现,不至于像官网上介绍的笼统. 联系 ...
- Android中常见的图片加载框架
图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行 ...
最新文章
- 洛谷P1027 Car的旅行路线 计算几何 图论最短路
- HTML、CSS、JS都有哪些区别
- 基于gulp编写的一个简单实用的前端开发环境
- unity3d中脚本生命周期(MonoBehaviour lifecycle)
- linux建sybase设备,linux sybase 安装全过程(写给初学者)
- Pandas系列(十二)实现groupby分组统计
- openssl genrsa
- OneNote2007简体中文便携版
- 全球国家和地区代码列表
- 0.96OLED显示原理及FPGA驱动程序
- 华为p10刷原生android,华为p10怎么刷机 华为p10刷机方法【详细介绍】
- 【预测模型】基于灰狼算法优化最小二乘支持向量机实现数据分类matlab代码​
- 1050: 找出直系亲属
- python设置表格格式_python openpyxl表格样式设置
- 大厂对学历的要求是什么?如果学历不够,拿什么来凑?
- Python爬取王者荣耀所有英雄以及高清大图
- 超级计算机还是超级烂尾?天河一号闲置近1年
- 统计一组名字中每个姓出现的次数
- mathcad入门二
- 佛用品须以恭敬心待之