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)...相关推荐

  1. Android 中LayoutInflater(布局加载器)之介绍篇

    本文出自博客Vander丶CSDN博客,如需转载请标明出处,尊重原创谢谢 博客地址:http://blog.csdn.net/l540675759/article/details/78099358 前 ...

  2. android编程中添加gif,Android应用开发之【Android】使用android-gif-drawable包加载GIF动图...

    本文将带你了解Android应用开发之[Android]使用android-gif-drawable包加载GIF动图,希望本文对大家学Android有所帮助. [导包] 首先需要导入android-g ...

  3. 018 Android加固之实现dex加载器

    文章目录 Android APK加固-安全人员角度 关于类加载器 类加载器 类加载器的种类和个数 创建类加载实例 类加载器DexClassLoader和PathClassLoader 使用类加载器动态 ...

  4. 剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)

    之前项目中使用Picasso遇到了一个问题:在Android 5.0以上版本的部分手机上使用Picasso加载本地图片会失败.为了解决这个问题,研究了一下Picasso加载和压缩本地图片的流程,才有了 ...

  5. Android插件化原理—ClassLoader加载机制

    前面<Android 插件化原理学习 -- Hook 机制之动态代理>一文中我们探索了一下动态代理 hook 实现了 启动没有在 AndroidManifest.xml 中显式声明的 Ac ...

  6. android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例

    本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...

  7. Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)...

    Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果) 首句依然是那句老话,你懂得! finddreams :(http://blog.csdn.net/finddr ...

  8. Android中使用x5内核加载网页的实现

    前言 联系方式 背景 SDK下载 SDK集成 使用 代码实现 前言 由于是使用的腾讯浏览服务,所以这里大部分介绍的是官网的一些东西,不过自己会做一些复杂使用部分的实现,不至于像官网上介绍的笼统. 联系 ...

  9. Android中常见的图片加载框架

    图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行 ...

最新文章

  1. 洛谷P1027 Car的旅行路线 计算几何 图论最短路
  2. HTML、CSS、JS都有哪些区别
  3. 基于gulp编写的一个简单实用的前端开发环境
  4. unity3d中脚本生命周期(MonoBehaviour lifecycle)
  5. linux建sybase设备,linux sybase 安装全过程(写给初学者)
  6. Pandas系列(十二)实现groupby分组统计
  7. openssl genrsa
  8. OneNote2007简体中文便携版
  9. 全球国家和地区代码列表
  10. 0.96OLED显示原理及FPGA驱动程序
  11. 华为p10刷原生android,华为p10怎么刷机 华为p10刷机方法【详细介绍】
  12. 【预测模型】基于灰狼算法优化最小二乘支持向量机实现数据分类matlab代码​
  13. 1050: 找出直系亲属
  14. python设置表格格式_python openpyxl表格样式设置
  15. 大厂对学历的要求是什么?如果学历不够,拿什么来凑?
  16. Python爬取王者荣耀所有英雄以及高清大图
  17. 超级计算机还是超级烂尾?天河一号闲置近1年
  18. 统计一组名字中每个姓出现的次数
  19. mathcad入门二
  20. 佛用品须以恭敬心待之

热门文章

  1. python 基础笔记十一 - random模块
  2. JS window对象的top、parent、opener含义介绍 以及防止网页被嵌入框架的代码
  3. Visual Studio 2015价格大幅下调
  4. Android UI:XML文件配置按钮等背景方案
  5. Silverlight RIA Services基础专题
  6. debian 语言配置
  7. 英语口语(每日更新)
  8. 设置上传文件的最大大小
  9. 安装php5、卸载php、安装php7的教程
  10. AD不能复制提示目标主要名称不正确