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

2019-12-10 18:34:04丽君

我们将上面的代码稍微修改下

final ImageView mImageView = (ImageView) findViewById(R.id.image); 
  String imageUrl = "https://www.easck.com/-55osAWw3x0Q/URquUtcFr5I/AAAAAAAAAbs/rWlj1RUKrYI/s1024/A%252520Photographer.jpg"; 
  ImageSize mImageSize = new ImageSize(100, 100); 
   
  //显示图片的配置 
  DisplayImageOptions options = new DisplayImageOptions.Builder() 
    .cacheInMemory(true) 
    .cacheOnDisk(true) 
    .bitmapConfig(Bitmap.Config.RGB_565) 
    .build(); 
   
  ImageLoader.getInstance().loadImage(imageUrl, mImageSize, options, new SimpleImageLoadingListener(){ 
 
   @Override 
   public void onLoadingComplete(String imageUri, View view, 
     Bitmap loadedImage) { 
    super.onLoadingComplete(imageUri, view, loadedImage); 
    mImageView.setImageBitmap(loadedImage); 
   } 
    
  }); 

我们使用了DisplayImageOptions来配置显示图片的一些选项,这里我添加了将图片缓存到内存中已经缓存图片到文件系统中,这样我们就不用担心每次都从网络中去加载图片了,是不是很方便呢,但是DisplayImageOptions选项中有些选项对于loadImage()方法是无效的,比如showImageOnLoading, showImageForEmptyUri等,

displayImage()加载图片

接下来我们就来看看网络图片加载的另一个方法displayImage(),代码如下

final ImageView mImageView = (ImageView) findViewById(R.id.image); 
  String imageUrl = "https://www.easck.com/-55osAWw3x0Q/URquUtcFr5I/AAAAAAAAAbs/rWlj1RUKrYI/s1024/A%252520Photographer.jpg"; 
   
  //显示图片的配置 
  DisplayImageOptions options = new DisplayImageOptions.Builder() 
    .showImageOnLoading(R.drawable.ic_stub) 
    .showImageOnFail(R.drawable.ic_error) 
    .cacheInMemory(true) 
    .cacheOnDisk(true) 
    .bitmapConfig(Bitmap.Config.RGB_565) 
    .build(); 
   
  ImageLoader.getInstance().displayImage(imageUrl, mImageView, options); 

从上面的代码中,我们可以看出,使用displayImage()比使用loadImage()方便很多,也不需要添加ImageLoadingListener接口,我们也不需要手动设置ImageView显示Bitmap对象,直接将ImageView作为参数传递到displayImage()中就行了,图片显示的配置选项中,我们添加了一个图片加载中ImageVIew上面显示的图片,以及图片加载出现错误显示的图片,效果如下,刚开始显示ic_stub图片,如果图片加载成功显示图片,加载产生错误显示ic_error