您的位置:首页 > 移动开发 > Android开发

Android 开源框架Universal-ImageLoader的使用

2016-06-30 16:26 351 查看
ImageLoader 是一个图片加载开源框架,他的很多优点帮助我们解决了开发中图片加载的大部分问题。优点如下:

高效加载。基于BitmapFactory.Options的inSampleSize属性缩放图片,减少了OOM的问题。
LRU缓存策略。LRU算法的核心思想是释放最近最少使用的缓存,ImageLoader内部用LruCache和DiskLruCache实现内存缓存和硬盘缓存,避免了过多的流量消耗等问题。
图片的同步加载和异步加载。在特定情况下,我们可以灵活使用不同的并发加载方式。

该项目存在于Github上面https://github.com/nostra13/Android-Universal-Image-Loader上。下载完后,我们从根目录中的downloads中获得jar文件,放入我们的开发环境(这里用的是Eclipse)的Libs里面,完成上面步骤,我们就开始使用ImageLoader了。

使用ImageLoader之前的配置工作

创建一个继承自Application的类,在onCreate()中创建ImageLoader的配置参数。
配置Android Manifest文件。

public class ImageLoaderConfigurationApption extends Application {

@Override
public void onCreate() {
super.onCreate();

ImageLoaderConfiguration configuration = ImageLoaderConfiguration
.createDefault(this);

ImageLoader.getInstance().init(configuration);
}
}


<!-- 配置文件 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application android:name="com.example.imaeloader.ImageLoaderConfigurationApption"></application>


ImageLoader 异步加载图片的两种方式

1、使用ImageLoader对象的loadImage方法,在回调函数中设置Bitmap。一般是这样调用的ImageLoader.getInstance().loadImage(uri, targetImageSize, options, listener);
我们发现这个方法里面有4个参数。
URI:一般指要下载的路径。
targetImageSize:加载图像的的大小。

options:图片的具体配置。如下所示:

DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.loading) //设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.error)  //设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
.considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
//.decodingOptions(BitmapFactory.Options decodingOptions)//设置图片的解码配置
.delayBeforeLoading(0)//int delayInMillis为你设置的下载前的延迟时间
//设置图片加入缓存前,对bitmap进行设置
//.preProcessor(BitmapProcessor preProcessor)
.resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
.displayer(new RoundedBitmapDisplayer(20))//不推荐用!!!!是否设置为圆角,弧度为多少
.displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间,可能会出现闪动
.build();//构建完成
4、listener,监听图片加载过程中的加载状态。
下面是这个方法的具体使用。
String uri="http://avatar.csdn.net/6/6/3/3_oxuanboy1.jpg";
//单位为PX。
ImageSize targetImageSize=new ImageSize(100, 100);
ImageLoader.getInstance().loadImage(uri, targetImageSize, options, new ImageLoadingListener() {

@Override
public void onLoadingStarted(String arg0, View arg1) {
// TODO Auto-generated method stub

}

@Override
public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
// TODO Auto-generated method stub

}
//加载完成
@Override
public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
// TODO Auto-generated method stub

}

@Override
public void onLoadingCancelled(String arg0, View arg1) {
// TODO Auto-generated method stub

}
});


2、使用ImageLoader对象的DisplayImage方法。相对较为方便,一般使用格式:ImageLoader.getInstance().displayImage(uri, imageAware),参数说明:
URI:调用的地址:
imageAware:加载图片的View。

在GridView里面优化加载

当我们在GridView里面要显示很多图片的时候优化加载,比如在滑动列表的时候 ,和猛的下滑很多的时候。
gridView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: