首页 > 代码库 > ImageLoader使用

ImageLoader使用

第一步: 初始化的配置

  实现自定义的MyApplication类,并初始化ImageLoader

public class MyApplication extends Application {     @Override     public void onCreate() {         super.onCreate();           ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())                 .threadPriority(Thread.NORM_PRIORITY - 2)                 .denyCacheImageMultipleSizesInMemory()                 .discCacheFileNameGenerator(new Md5FileNameGenerator())                 .tasksProcessingOrder(QueueProcessingType.LIFO)                 .enableLogging() // Not necessary in common                 .build();         // //全局初始化 ,默认的配置 ,也可以使用默认的配置      //  ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));       ImageLoader.getInstance().init(config);    //  1 . 初始化配置信息               }}

第二步 : 设置图片的显示类型 DisplayImageOptions

    在要显示图片的时候设置

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

第三步 : 使用

      /**              * 显示图片              * 参数1:图片url              * 参数2:显示图片的控件              * 参数3:显示图片的设置              *              */      // 第一种:   ImageLoader.getInstance().displayImage(url, holder.image, options);      //第二种 四个参数            /**              *             * 参数1:图片url              * 参数2:显示图片的控件              * 参数3:显示图片的设置              * 参数4:监听器              */          ImageLoader.getInstance().displayImage(images[position], imageView, options, new SimpleImageLoadingListener() {                  @Override                  public void onl oadingStarted(String imageUri, View view) {  // 加载时候                    spinner.setVisibility(View.VISIBLE);  //显示进度条                }                  @Override                  public void onl oadingFailed(String imageUri, View view, FailReason failReason) {                      String message = null;                      switch (failReason.getType()) {     // 获取图片失败类型                          case IO_ERROR:              // 文件I/O错误                              message = "Input/Output error";                              break;                          case DECODING_ERROR:        // 解码错误                              message = "Image can‘t be decoded";                              break;                          case NETWORK_DENIED:        // 网络延迟                              message = "Downloads are denied";                              break;                          case OUT_OF_MEMORY:         // 内存不足                              message = "Out Of Memory error";                              break;                          case UNKNOWN:               // 原因不明                              message = "Unknown error";                              break;                      }                      Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();                        spinner.setVisibility(View.GONE);                  }                    @Override                  public void onl oadingComplete(String imageUri, View view, Bitmap loadedImage) {  //                    spinner.setVisibility(View.GONE);       // 不显示圆形进度条                  }              });  

其他的一些配置 :设置滑动时候不加载图片

  // 设置滑动不加载 pauseOnScroll(滑动不加载) 传 true     pauseOnScroll(猛划不加载) 传true     listView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), pauseOnScroll, pauseOnScroll));       gridView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), pauseOnScroll, pauseOnFling));

OutOfMemoryError 解决方法

  减少线程池中线程的个数,在ImageLoaderConfiguration中的(.threadPoolSize)中配置,推荐配置1-5  在DisplayImageOptions选项中配置bitmapConfig为Bitmap.Config.RGB_565,因为默认是ARGB_8888,使用RGB_565会比使用ARGB_8888少消耗2倍的内存  在ImageLoaderConfiguration中配置图片的内存缓存为memoryCache(new WeakMemoryCache()) 或者不使用内存缓存  在DisplayImageOptions选项中设置.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者imageScaleType(ImageScaleType.EXACTLY)

本地图片的使用 , 转换成url

  //图片来源于Content provider    String contentprividerUrl = "content://media/external/audio/albumart/13";    //图片来源于assets    String assetsUrl = Scheme.ASSETS.wrap("image.png");    //图片来源于    String drawableUrl = Scheme.DRAWABLE.wrap("R.drawable.image"); 

附录 :
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

ImageLoader使用