Android-Universal-Image-Loader

github地址:https://github.com/nostra13/Android-Universal-Image-Loader

加载缓存网络图片的工具,此工具的最大优点是提供了下载缓存进度接口,缺点需要自己处理加载后的图片

使用效果:



import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageSize;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; /** 图片下载demo
* https://github.com/nostra13/Android-Universal-Image-Loader
*/
public class UnlversalImageLoaderDemo extends AppCompatActivity implements View.OnClickListener {
private Button mBtn1,mBtn2,mBtn3,mBtn4,mBtn5,mBtn6;
private ImageView mImage;
private ImageLoader mImageLoader;
private Bitmap mBitmap;
private DisplayImageOptions mOptions; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_unlversal_image_loader);
mBtn1 = (Button)findViewById(R.id.btn1);
mBtn2 = (Button)findViewById(R.id.btn2);
mBtn3 = (Button)findViewById(R.id.btn3);
mBtn4 = (Button)findViewById(R.id.btn4);
mBtn5 = (Button)findViewById(R.id.btn5);
mBtn6 = (Button)findViewById(R.id.btn6);
mBtn1.setOnClickListener(this);
mBtn2.setOnClickListener(this);
mBtn3.setOnClickListener(this);
mBtn4.setOnClickListener(this);
mBtn5.setOnClickListener(this);
mBtn6.setOnClickListener(this); mImage = (ImageView)findViewById(R.id.image);
/**
* 初始化工作
*/
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(UnlversalImageLoaderDemo.this).build();
mImageLoader = ImageLoader.getInstance();
mImageLoader.init(imageLoaderConfiguration); /* 选项功能模板
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub) // resource or drawable
.showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable
.showImageOnFail(R.drawable.ic_error) // resource or drawable
.resetViewBeforeLoading(false) // default
.delayBeforeLoading(1000)
.cacheInMemory(false) // default
.cacheOnDisk(false) // default
.preProcessor(...)
.postProcessor(...)
.extraForDownloader(...)
.considerExifParams(false) // default
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
.bitmapConfig(Bitmap.Config.ARGB_8888) // default
.decodingOptions(...)
.displayer(new SimpleBitmapDisplayer()) // default
.handler(new Handler()) // default
.build();
*/
mOptions = new DisplayImageOptions.Builder().build(); } @Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn1:
/**
* 第一种加载图片的方式
*/
mImageLoader.displayImage("https://s0.52poke.wiki/wiki/thumb/2/21/001Bulbasaur.png/300px-001Bulbasaur.png",mImage);
break;
case R.id.btn2:
/**
* 第二种加载图片的方式
*/
mImageLoader.loadImage("https://s0.52poke.wiki/wiki/thumb/7/73/002Ivysaur.png/300px-002Ivysaur.png",new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
mImage.setImageBitmap(loadedImage); }
}); break;
case R.id.btn3:
/**
* 第三种加载图片的方式
*/
mImageLoader.displayImage("https://s0.52poke.wiki/wiki/thumb/a/ae/003Venusaur.png/300px-003Venusaur.png", mImage,mOptions, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String s, View view) {
//开始加载
Toast.makeText(UnlversalImageLoaderDemo.this,"开始加载妙蛙花",Toast.LENGTH_SHORT).show();
} @Override
public void onLoadingFailed(String s, View view, FailReason failReason) {
//加载失败
Toast.makeText(UnlversalImageLoaderDemo.this,"妙蛙花加载失败",Toast.LENGTH_SHORT).show(); } @Override
public void onLoadingComplete(String s, View view, Bitmap bitmap) {
//加载成功
Toast.makeText(UnlversalImageLoaderDemo.this,"妙蛙花加载成功",Toast.LENGTH_SHORT).show(); } @Override
public void onLoadingCancelled(String s, View view) {
//取消加载
Toast.makeText(UnlversalImageLoaderDemo.this,"妙蛙花取消加载",Toast.LENGTH_SHORT).show(); }
}, new ImageLoadingProgressListener() {
@Override public void onProgressUpdate(String s, View view, int i, int i1) {
//下载进度
/**
* String s = 下载网站url
* View view = 你导入的view 可以是null
* int i = 当前下载字节
* int i1 = 总字节
*/ }
}); break;
case R.id.btn4:
/**
* 第四种加载图片的方式
*/
new Thread(new Runnable() {
@Override
public void run() {
mBitmap = mImageLoader.loadImageSync("https://s0.52poke.wiki/wiki/thumb/5/53/054Psyduck.png/300px-054Psyduck.png");
runOnUiThread(new Runnable() {
@Override
public void run() {
mImage.setImageBitmap(mBitmap);
}
});
}
}).start();
break;
case R.id.btn5:
/**
* 第五种处理图片的方式,处理图片大小
*/
ImageSize targetSize1 = new ImageSize(100, 100); // result Bitmap will be fit to this size
mImageLoader.loadImage("https://s0.52poke.wiki/wiki/thumb/c/c6/094Gengar.png/300px-094Gengar.png", targetSize1, mOptions, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
mImage.setImageBitmap(loadedImage); }
});
break;
case R.id.btn6:
new Thread(new Runnable() {
@Override
public void run() {
ImageSize targetSize2 = new ImageSize(80, 50); // result Bitmap will be fit to this size
mBitmap = mImageLoader.loadImageSync("https://s0.52poke.wiki/wiki/thumb/e/e2/133Eevee.png/300px-133Eevee.png", targetSize2, mOptions);
runOnUiThread(new Runnable() {
@Override
public void run() {
mImage.setImageBitmap(mBitmap);
}
});
}
}).start(); break; default:
break;
} }
}

Android 开发 框架系列 Android-Universal-Image-Loader 图片加载使用demo的更多相关文章

  1. Android 开发 框架系列 OkHttp拦截器

    前言 此篇博客只讲解okhttp的拦截器功能的详细使用,如果你还不太了解okhttp可以参考我另外一篇博客 Android 开发 框架系列 OkHttp使用详解 添加Interceptor的简单例子 ...

  2. Android之Glide(非常好用的图片加载框架)

    谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech. Glide是一种快速.高效的开源媒体管理和Android的包裹mediadecoding图像加载框架,内 ...

  3. 14. Android框架和工具之 ImageLoader(图片加载)

    1. 这个图片加载框架网友很多都已经使用过,而且分析也很到位,这里我就不写了,直接引用别人,尊重别人的劳动成果. 2. 参考如下: (1)Android 开源框架Universal-Image-Loa ...

  4. Android 开发 框架系列 Google的ORM框架 Room

    目录 简介 导入工程 使用流程概况 一个简单的小Demo 深入学习 @Entity使用 自定义表名 tableName  自定义字段名@ColumnInfo 主键 @PrimaryKey 索引 @In ...

  5. Android 开发 框架系列 百度语音合成

    官方文档:http://ai.baidu.com/docs#/TTS-Android-SDK/6d5d6899 官方百度语音合成控制台:https://cloud.baidu.com/product/ ...

  6. android 开发 框架系列 使用 FileDownloader 实现检查更新的功能class

    首先介绍一下FileDownloader GH :https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md FileD ...

  7. Android开发Settings源码分析之主界面加载(二)

    现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套[Android进阶学习视频].[全套Android面试秘籍].[Android知识点PDF] ...

  8. android开发里跳过的坑——GridView使用Glide加载图片不显示

    用grideview显示本地图片列表,用了Glide加载框架,具体调用如下: Glide.with(mContext).load(Uri.fromFile(file)).into(imageView) ...

  9. Android 开发 框架系列 OkHttp使用详解

    简介 okhttp是一个第三方类库,用于android中请求网络.这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) . ...

  10. Android 开发 框架系列 EventBus 事件总线

    介绍 GitHub:https://github.com/greenrobot/EventBus 先聊聊EventBus 线程总线是干什么的,使用环境,优点.缺点. 干什么的? 一句话,简单统一数据传 ...

随机推荐

  1. httpd 2.4连接php-fpm

    php-fpm参数修改 默认php-fpm监听在127.0.0.1接口上,修改listen = 192.168.99.150:9000,可以监听在指定网卡上. 默认php-fpm仅允许127.0.0. ...

  2. Maximum Average Subarray

    Given an array with positive and negative numbers, find the maximum average subarray which length sh ...

  3. slick插件一些配置

  4. C++遍历路径下的所有文件

    intptr_t类型用于记录文件夹句柄,注意该类型不是指针类型,而是int型的重定义. _finddata_t结构体类型用于记录文件信息. _finddata_t结构体定义如下 struct _fin ...

  5. 《TypeScript 中文入门教程》

    转载:<TypeScript 中文入门教程> 17.注解 (2015-12-03 11:36) 转载:<TypeScript 中文入门教程> 16.Symbols (2015- ...

  6. 关于dos命令行脚本编写

    dos常用命令另查 开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码也是共用的,只是cmd文件中允许 ...

  7. jenkins 持续集成iOS开发

    持续集成即Continuous Integration,简称CI 1,安装jenkins,brew install jenkins 2,在浏览器输入localhost:8080会出现一个网页,要求输入 ...

  8. WEB学习笔记1-综述

    WEB前端基本技术:HTML.CSS.JavaScript 概念: 从职责上讲,Web前端开发要涉及网站开发的方方面面,从前端UI到和后端的数据交互都属于前端开发的范畴.Web前端开发是兼具艺术气息和 ...

  9. 缓慢拒绝服务攻击- slowloris.pl

    How use Slowloris   Requirements: # sudo apt-get update # sudo apt-get install perl # sudo apt-get i ...

  10. go-json处理的问题

    1.通过Decoder来解析json串 package main import ( "encoding/json" "fmt" "io" & ...