全面解析Android的开源图片框架Universal-Image-Loader

2019-12-10 18:34:04丽君
易采站长站为您分析Android的开源图片框架Universal-Image-Loader,Universal-Image-Loader在GitHub上开源,其提供的图片加载功能令人印象相当深刻,需要的朋友可以参考下  

相信大家平时做Android应用的时候,多少会接触到异步加载图片,或者加载大量图片的问题,而加载图片我们常常会遇到许多的问题,比如说图片的错乱,OOM等问题,对于新手来说,这些问题解决起来会比较吃力,所以就有很多的开源图片加载框架应运而生,比较著名的就是Universal-Image-Loader,相信很多朋友都听过或者使用过这个强大的图片加载框架,今天这篇文章就是对这个框架的基本介绍以及使用,主要是帮助那些没有使用过这个框架的朋友们。该项目存在于Github上面https://www.easck.com/p>

新建一个Android项目,下载JAR包添加到工程libs目录下。
新建一个MyApplication继承Application,并在onCreate()中创建ImageLoader的配置参数,并初始化到ImageLoader中代码如下:

package com.example.uil; 
 
import com.nostra13.universalimageloader.core.ImageLoader; 
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; 
 
import android.app.Application; 
 
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); 
 } 
 
} 

ImageLoaderConfiguration是图片加载器ImageLoader的配置参数,使用了建造者模式,这里是直接使用了createDefault()方法创建一个默认的ImageLoaderConfiguration,当然我们还可以自己设置ImageLoaderConfiguration,设置如下

File cacheDir = StorageUtils.getCacheDirectory(context); 
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) 
  .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 
  .diskCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null) 
  .taskExecutor(...) 
  .taskExecutorForCachedImages(...) 
  .threadPoolSize(3) // default 
  .threadPriority(Thread.NORM_PRIORITY - 1) // default 
  .tasksProcessingOrder(QueueProcessingType.FIFO) // default 
  .denyCacheImageMultipleSizesInMemory() 
  .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) 
  .memoryCacheSize(2 * 1024 * 1024) 
  .memoryCacheSizePercentage(13) // default 
  .diskCache(new UnlimitedDiscCache(cacheDir)) // default 
  .diskCacheSize(50 * 1024 * 1024) 
  .diskCacheFileCount(100) 
  .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default 
  .imageDownloader(new BaseImageDownloader(context)) // default 
  .imageDecoder(new BaseImageDecoder()) // default 
  .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default 
  .writeDebugLogs() 
  .build();