相信大家平时做Android应用的时候,多少会接触到异步加载图片,或者加载大量图片的问题,而加载图片我们常常会遇到许多的问题,比如说图片的错乱,OOM等问题,对于新手来说,这些问题解决起来会比较吃力,所以就有很多的开源图片加载框架应运而生,比较著名的就是Universal-Image-Loader,相信很多朋友都听过或者使用过这个强大的图片加载框架,今天这篇文章就是对这个框架的基本介绍以及使用,主要是帮助那些没有使用过这个框架的朋友们
该项目存在于Github上面 https://github.com/nostra13/Android-Universal-Image-Loader
我们可以先看看这个开源库存在哪些特征
1 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
2 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
3 支持图片的内存缓存,文件系统缓存或者SD卡缓存
4 支持图片下载过程的监听
5 根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
6 较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
7 提供在较慢的网络下对图片进行加载
具体步骤:
1.新建一个MyApplication继承Application,并在onCreate()中创建ImageLoader的配置参数,并初始化到ImageLoader中代码如下
public class MyApplication extends Application {
**重点内容**@Override
public void onCreate() {
super.onCreate();
//创建默认的ImageLoader配置参数
ImageLoaderConfiguration configuration = ImageLoaderConfiguration
.createDefault(this);
//Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(configuration);
}
}
配置Android Manifest文件
在主方法中
public class MainActivity extends AppCompatActivity {
//接口网址
String urlBitmap = “https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg“;
private ImageLoader instance;
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
instance = ImageLoader.getInstance();
//获取控件
iv = (ImageView) findViewById(R.id.iv);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
instance.displayImage(urlBitmap,iv);
}
});
}
另外,需要在build.gradle里添加远程依赖
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’