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. Forth 采用Create,Does>定义新的词(word)& 延迟词技术

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  2. mariadb安装和一些sql基础

    MariaDB安装    yum -y install mariadb mariadb-server 启动    systemctl start mariadb     systemctl enabl ...

  3. MegaCli 简易使用介绍

    查看帮助 MegaCli64 -h 适配卡配置 查看RAID控制器的数量 MegaCli64 -adpCount 查看所有raid卡详细信息 MegaCli64 -AdpAllInfo -aALL 查 ...

  4. SQL-44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现。

    题目描述 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现.CREATE TABLE IF NOT EXISTS ti ...

  5. JS实现大整数乘法(性能优化、正负整数)

    本方法的思路为: 一:检查了输入的合法性(非空,无非法字符) 二:检查输入是否可以进行简单计算(一个数为 0,1,+1,-1) 三:去掉输入最前面可能有的正负符号,并判断输出的正负 四:将输入的值分成 ...

  6. SVN创建分支/合并分支/切换分支

    在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录.这样在trunk中开始进行开发 trunk是主分支,是日常开发进行的地方. branch ...

  7. linux之文件增删改查

  8. matrix_chain_order

    to calculate the min step of multiplicate some matixs package dynamic_programming; public class matr ...

  9. 03_安装vsftp服务器

    1 安装vsftpd组件 [root@bogon ~]# yum -y install vsftpd 安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件. 2 添 ...

  10. C#中关于对out和ref的认识

    1.两者都是按照地址进行传递的.2.ref关键字是的参数按照引用传递的方式进行.他的效果是控制权传递会调用方法是,可以对这个参数进行修改   要使用ref参数,那么方法的定义和调用方法都必须进行显示的 ...