这个也是近期项目中使用到的第三方图片载入框架。在这里也本身总结一下,简单的介绍一些使用的方式。java
1.多线程下载图片。图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等 2.支持任意的配置ImageLoader,好比线程池。图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其它的一些配置 3.支持图片的内存缓存,文件系统缓存或者SD卡缓存 4.支持图片下载过程的监听 5.依据控件(ImageView)的大小对Bitmap进行裁剪,下降Bitmap占用过多的内存 6.较好的控制图片的载入过程,好比暂停图片载入。又一次開始载入图片,通常使用在ListView,GridView中。滑动过程当中暂停载入图片。中止滑动的时候去载入图片 7.提供在较慢的网络下对图片进行载入
ImageLoader Jar包引入项目中:https://github.com/nostra13/Android-Universal-Image-Loader/raw/master/downloads/universal-image-loader-1.9.5.jar
或者是下载这个项目,而后导入到project中。使用库依赖的方式进行引用,假设还不太懂怎么导入demo和库依赖,可以看下
AndroidStudio导入本地和github项目,以及怎么加入第三方依赖介绍git
配置ImageLoder參数(ImageLoaderConfiguration) ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(this);
初始化ImageLoader ImageLoader.getInstance()
displayImage(), loadImage(),loadImageSync()
好了,咱们開始载入图片吧。
这个时候,咱们需要配置imageloader的參数。也就是在application里面配置。这里咱们的application使用的是单例模式:github
public class MyApplication extends Application{
private static MyApplication instance=null;
@Override
public void onCreate() {
super.onCreate();
this.instance=this;
initImageLoader(getApplicationContext());
}
public static MyApplication getInstance(){
return instance;
}
private void initImageLoader(Context context){
//cacheDir这里是获取到他默认的本地缓存文件夹。这StorageUtils是他这个imageloader里面的工具类,默认的缓存文件夹是包名/cache文件夹下(固然本身可以改变)
File cacheDir = StorageUtils.getCacheDirectory(context);
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration
.Builder(context)
.threadPoolSize(5)//线程池
.diskCache(new UnlimitedDiskCache(cacheDir))//内存卡
.threadPriority(Thread.NORM_PRIORITY -2)//线程优先级
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LargestLimitedMemoryCache(2 * 1024 * 1024))//内存缓存
.memoryCacheSize(2 * 1024 * 1024)//内存缓存大小
.diskCacheSize(50 * 1024 * 1024)//存储卡缓存大小
.diskCacheFileCount(100)//存储卡文件个数
.memoryCacheSizePercentage(13) // default
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
.imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
//.writeDebugLogs()
.tasksProcessingOrder(QueueProcessingType.FIFO) //先进先出
.build();
ImageLoader.getInstance().init(configuration);
}
}
接下来,咱们就要获取imageloader的实例。和设置DisplayImageOptions的參数,这里我附上一张DisplayImageOptions配置图:缓存
mImageLoader = ImageLoader.getInstance();
mOptions = new DisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_launcher)//图片载入的时候显示的默认图
.showImageForEmptyUri(R.mipmap.ic_launcher)//图片的地址为空的时候显示的图
.showImageOnFail(R.mipmap.ic_launcher)//图片载入失败的时候显示
.cacheOnDisk(true) //设置保存在sdcard中
.cacheInMemory(true) //设置保存在内存其中
.build();
最后咱们就要载入图片了:
载入以前:markdown
载入成功后:
是否是很是easy呢。而且配置也是通俗易懂的。只是不幸的是,这个框架。已经中止了更新,只是我相信,这么优秀的开源框架,仍是会有很是多人记着的。网络
固然了哈,个人项目中用到的也就是载入图片,并没实用到其它的厉害的方法,比方多线程
// Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view
// which implements ImageAware interface)
imageLoader.displayImage(imageUri, imageView, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
//開始载入
...
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
//载入失败
...
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
//载入完毕
...
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
//载入取消
...
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current, int total) {
//载入百分比
...
}
});
// Load image, decode it to Bitmap and return Bitmap to callback
ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size
imageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
}
});
// Load image, decode it to Bitmap and return Bitmap synchronously
ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size
Bitmap bmp = imageLoader.loadImageSync(imageUri, targetSize, options);
好了,想要了解不少其它的有关Universal-Image-Loader,可以去官网下载下来慢慢研究,这里就很少作解释了哈。app