美文网首页Android开发知识集
Android图片加载之ImageLoader

Android图片加载之ImageLoader

作者: 专属守护 | 来源:发表于2017-03-30 19:39 被阅读152次

    ImageLoader

    特征:

    1、多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等

    2、支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置

    3、支持图片的内存缓存,文件系统缓存或者SD卡缓存

    4、根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存

    5、较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片

    6、支持图片下载过程的监听

    7、提供在较慢的网络下对图片进行加载

    简单使用:

    1、使用ImageLoader的loadImage()方法来加载网络图片

    ImageLoader.getInstance().loadImage(imageUrl, 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) {

    mImageView.setImageBitmap(loadedImage);

    }

    @Override

    public void onLoadingCancelled(String imageUri, View view) {

    }

    });

    2、DisplayImageOptions,他可以配置一些图片显示的选项,比如图片在加载中ImageView显示的图片,是否需要使用内存缓存,是否需要使用文件缓存

    //显示图片的配置

    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);

    }

    });

    3、使用displayImage()比使用loadImage()方便很多,也不需要添加ImageLoadingListener接口,我们也不需要手动设置ImageView显示Bitmap对象,直接将ImageView作为参数传递到displayImage()中就行了

    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);

    4、使用displayImage()方法 他会根据控件的大小和imageScaleType来自动裁剪图片

    5、在加载网络图片的时候,经常有需要显示图片下载进度的需求,Universal-Image-Loader当然也提供这样的功能,只需要在displayImage()方法中传入ImageLoadingProgressListener接口就行了

    imageLoader.displayImage(imageUrl, mImageView, options, new SimpleImageLoadingListener(), new ImageLoadingProgressListener() {

    @Override

    public void onProgressUpdate(String imageUri, View view, int current,

    int total) {

    }

    });

    6、使用Universal-Image-Loader框架不仅可以加载网络图片,还可以加载sd卡中的图片,Content provider等,使用也很简单,只是将图片的url稍加的改变下就行了,下面是加载文件系统的图片

    ImageLoader库就先介绍这些,如果对于其他的图片加载库有兴趣可以看看我的其他博客

    相关文章

      网友评论

        本文标题:Android图片加载之ImageLoader

        本文链接:https://www.haomeiwen.com/subject/zpvpottx.html