图片加载框架之 ImageLoader

1_特点
1)多线程下载图片,图片可以来源于网络,文件系统,项目文件夹 assets 中以及 drawable
中等
2)支持随意的配置 ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓
存策略,图片显示选项以及其他的一些配置
3)支持图片的内存缓存,文件系统缓存或者 SD 卡缓存
4)支持图片下载过程的监听
5)根据控件(ImageView)的大小对 Bitmap 进行裁剪,减少 Bitmap 占用过多的内存
6)较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在
ListView,GridView 中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
7)提供在较慢的网络下对图片进行加载

2_下载地址
https://github.com/nostra13/Android-Universal-Image-Loader

3_使用步骤

1)导入 universal-image-loader-1.9.5.jar 到项目中
2)创建 MyApplication 继承 Application,在 oncreate()中初始化 ImageLoader
(1)初始化 ImageLoaderConfiguration

 // 初始化参数
 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2)
    // 线程优级         
    .denyCacheImageMultipleSizesInMemory()
    // 当同一个 Uri 获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同 图片
    .discCacheFileNameGenerator(new Md5FileNameGenerator())
    // 将保存 的时候的 URI 名称用 MD5
    .tasksProcessingOrder(QueueProcessingType.LIFO)
    // 设置图 片下载和显示的工作队列排序
    .writeDebugLogs()
    // 打印 debug log
    .build();

(2)ImageLoader 全局配置 

 // 全局初始化此配置 
 ImageLoader.getInstance().init(config); 

(3)完整代码 

public class MyApplication extends Application {

   @Override
   public void onCreate() {
       super.onCreate();
       initImageLoader(this);
   }

   // 初始化 imageloader     
   private void initImageLoader(Context context) { 
    // 初始化参数         
       ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2)
       // 线程优先级                 
       .denyCacheImageMultipleSizesInMemory()
       // 当同一个 Uri 获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的 大小的相同图片                 
       .discCacheFileNameGenerator(new Md5FileNameGenerator()) // 将保存的时候的 URI 名称用 MD5
       .tasksProcessingOrder(QueueProcessingType.LIFO)
       // 设置图片下载和显示的工作队列排序                
       .writeDebugLogs()
       // 打 印 debug log                 
       build();
        }
    }

3)将创建的 MyApplication 在 AndroidManifest.xml 中注册 

4)在 AndroidManifest.xml 中添加联网权限和写 sdk 权限 

<uses-permission android:name="android.permission.INTERNET">
</uses-permission> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permiss ion>

5)初始化 DisplayImageOptions 

 DisplayImageOptions options = new DisplayImageOptions.Builder().showStubImage(R.drawable.ic_stub)
    // 设置图片下载期间显示 的图片
    .showImageForEmptyUri(R.drawable.ic_empty)
    // 设置图片 Uri 为空或 是错误的时候显示的图片
    .showImageOnFail(R.drawable.ic_error)
    // 设置图片加载或解码过 程中发生错误显示的图片
    .cacheInMemory(true)
    // 设置下载的图片是否缓 存在内存中
    .cacheOnDisk(true)
    // 设置下载的图片是否缓存 在 SD 卡中
    .displayer(new RoundedBitmapDisplayer(20))
    // 设置成圆角图片
    .build();
  

6)获取 ImageLoader 实例 

private ImageLoader imageLoader = ImageLoader.getInstance(); 

7)显示加载的图片 

// 参数 1:图片 url; 参数 2:显示图片的控件; 参数 3:显示图片的设置; 参数 4:监听器 
imageLoader.displayImage(Constants.IMAGES[position], holder.image, options, mFirstLoadImageListener);

猜你喜欢

转载自www.cnblogs.com/yanglanwan/p/11299306.html