为什么80%的码农都做不了架构师?>>>   

这功能源自负责app中要加一个显示gif广告图功能。

android自带控件不支持gif图片,网上很多通过扩展ImageView或View来实现支持gif图片,但在android4.0后,需要关闭硬件加速功能才能使用,而且也容易出现内存溢出问题。

网上找了两个开源包来实现显示Gif图

android-gif-drawable 支持gif显示的view控件

项目地址:https://github.com/koral--/android-gif-drawable,

(如果访问不了,可以此这里下载)

用jni实现的,编译生成so库后直接xml定义view,据说性能比较好,也能比较好避免内存内存溢出问题。

在Android Studio项目添加使用:

build.gradle文件dependencies添加内容:

dependencies {

compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.+' /* 添加gif控件库引用 */

}

xUtils

项目地址:https://github.com/wyouflf/xUtils

包含了很多实用的android工具,这里主要用它下载文件

MainActivity.java

package com.penngo.gif;import android.app.Activity;
import android.content.Context;
import android.os.Environment;
import android.os.Bundle;
import android.util.Log;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;import java.io.File;import pl.droidsonroids.gif.GifDrawable;
import pl.droidsonroids.gif.GifImageView;/**** https://github.com/koral--/android-gif-drawable* https://github.com/wyouflf/xUtils*/
public class MainActivity extends Activity {private final String tag = "MainActivity-->";private GifImageView gif1;private GifImageView gif2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gif1 = (GifImageView)this.findViewById(R.id.info_gif1);gif2 = (GifImageView)this.findViewById(R.id.info_gif2);initGif();}private void initGif(){String url1 = "http://img5.imgtn.bdimg.com/it/u=3026352344,1511311477&fm=21&gp=0.jpg";String url2 = "http://img5.imgtn.bdimg.com/it/u=808161139,2623525132&fm=21&gp=0.jpg";File saveImgPath = this.getImageDir(this);File gifSavePath1 = new File(saveImgPath, "gif1");File gifSavePath2 = new File(saveImgPath, "gif2");displayImage(url1, gifSavePath1, gif1);displayImage(url2, gifSavePath2, gif2);}public void displayImage(String url, File saveFile, final GifImageView gifView){HttpUtils http = new HttpUtils();// 下载图片http.download(url, saveFile.getAbsolutePath(), new RequestCallBack<File>() {public void onSuccess(ResponseInfo<File> responseInfo) {try {Log.e(tag, "onSuccess========" + responseInfo.result.getAbsolutePath());GifDrawable gifFrom = new GifDrawable( responseInfo.result.getAbsolutePath() );gifView.setImageDrawable(gifFrom);}catch(Exception e){Log.e(tag, e.getMessage());}}public void onFailure(HttpException error, String msg) {Log.e(tag, "onFailure========" + msg);}});}public File getFilesDir(Context context, String tag){if(isSdCardExist() == true){return context.getExternalFilesDir(tag);}else{return context.getFilesDir();}}public File getImageDir(Context context){File file = getFilesDir(context, "images");return file;}public boolean isSdCardExist() {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {return true;}return false;}
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"><TextView android:text="@string/label_info"android:id="@+id/info"android:layout_width="wrap_content"android:layout_height="wrap_content" /><!-- gif控件 --><pl.droidsonroids.gif.GifImageViewandroid:id="@+id/info_gif1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scaleType="fitXY"android:layout_below="@+id/info"/><pl.droidsonroids.gif.GifImageViewandroid:id="@+id/info_gif2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scaleType="fitXY"android:layout_below="@+id/info_gif1"/>
</RelativeLayout>

运行效果:

下载

转载于:https://my.oschina.net/penngo/blog/481489

android显示网络gif图片相关推荐

  1. android加载网络gif图片不显示不出来的,android显示网络gif图片

    这功能源自负责app中要加一个显示gif广告图功能. android自带控件不支持gif图片,网上很多通过扩展ImageView或View来实现支持gif图片,但在android4.0后,需要关闭硬件 ...

  2. android 代码获取图片信息吗,Android 通过网络获取图片的代码

    Android 通过网络获取图片的代码 主activity package com.netimg; import android.app.Activity; import android.graphi ...

  3. android gif动态显示,Android 显示Gif 动态图片

    项目(showgif)已推到GitHub,查看文末的链接即可下载. 显示如下一张Gif动态图片: 看一下在demo中的效果: 按钮用来暂停和继续.看一下代码逻辑实现: package com.zms. ...

  4. android imageview 显示资源图片,ImageView显示网络图片资源

    Android ImageView如何加载网络图片资源有些事,可以看透,但不要看破;有些人,可以看穿,但不要戳穿;有些话,能不说就沉默,藏在心里更适合;有些伤,能不揭就不提起,无声忘记更明智. 用im ...

  5. Android Glide加载图片、网络监听、设置资源监听

    Glide加载图片.加载进度监听 前言 正文 一.项目配置 二.显示网络图片 三.添加设置资源监听 四.添加设置资源监听 五.添加加载进度条 六.封装工具类 七.源码 总结 前言   在日常开发中使用 ...

  6. android listview网络图片,Android ListView从网络获取图片及文字显示

    上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...

  7. Android ListView从网络获取图片及文字显示

    原帖地址:http://blog.csdn.net/wangjinyu501/article/details/8219317 上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从 ...

  8. Android通过网络URL获取图片并显示

    1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:to ...

  9. android网络下载图片并且显示在图库中

    1:网络下载图片 主要是练习网络编程,获取网络数据.不能使用网络资源的软件是很难有长足的发展和进步的,个人觉得,所以最近在学习网络相关的编程.这里就把我做的demo发在这里,同时我也梳理一下知识点.废 ...

最新文章

  1. Redis大集群扩容性能优化实践
  2. centos 6.8 搭建svn服务器
  3. 聊聊前后端分离的接口规范
  4. 图像添加柯西分布噪声
  5. 机房工程施工细节标准做法,每张图都有说明
  6. c语言程序为什么运行一半就自动关闭了,C语言为什么程序运行一半就出现停止工作...
  7. 我们为何要使用多线程,它有什么优点?
  8. GOF设计模式之桥接模式
  9. Charm Bracelet(信息学奥赛一本通-T1294)
  10. 隐瞒英特尔重大安全漏洞惹众怒,苹果遭遇集体诉讼
  11. jquery中select操作append、prepend、remove、find、val、get、selectedIndex、attr、option
  12. VASP、Lammps快速上手神器——MedeA软件
  13. bp神经网络模型的优缺点,什么是BP神经网络模型?
  14. cogs——2098. Asm.Def的病毒
  15. linux运维 对比 网络_网络工程师和Linux运维工程师存在哪些差异
  16. java中获取一个集合(Set)的子集的方法
  17. 【项目】区块链+人工智能 ---PAI白皮书分析(二)
  18. 《南茜的早晨》与《亡命鸡礼花》的dvd和原声音乐cd……大雅与大俗……Orz
  19. python爬取蚂蜂窝帖子图片
  20. shell网络编程netstat

热门文章

  1. 用AI帮你画新年贺卡:只需输入几个单词,就能模仿大师名作
  2. Siri在苹果继续活着、蠢着、没落着,现在它最后一个创始人也走了
  3. 通过图灵测试!Google掌舵人说“打电话AI”是一次非凡突破
  4. cygwin 解决 乱码问题 (转)
  5. 51nod 1062 序列中最大的数【打表】
  6. WebView 简介
  7. Qt网络应用----socket通信例子
  8. 静态路由实现负载均衡和高可用
  9. Poco官方PPT_020-ErrorHandlingAndDebugging双语对照翻译
  10. 学习和考取HCIE的普遍经典过程,你肯定是遇到了其中的某些问题?这里有你要的答案...