android开发ImageLoader网络图片加载简单使用
程序员文章站
2022-05-14 10:03:04
...
Android上最让人头疼的莫过于从网络获取图片、显示、回收,任何一个环节有问题都可能直接OOM,这个项目或许能帮到你。Universal Image Loader for Android的目的是为了实现异步的网络图片加载、缓存及显示,支持多线程异步加载。它最初来源于Fedor Vlasov的项目,且自此之后,经过大规模的重构和改进。
imageloader 加载图片的一般流程是先判断内存中是否有对应的Bitmap,再判断磁盘(disk)中是否有,如果没有就从网络中加载。最后根据原先在UIL中的配置判断是否需要缓存Bitmap到内存或磁盘中。Bitmap加载完后,就对它进行解析,然后显示到特定的ImageView中。
使用imageLoader可以实现:
- 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
- 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
- 支持图片的内存缓存,文件系统缓存或者SD卡缓存
- 支持图片下载过程的监听
- 根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
- 较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
- 提供在较慢的网络下对图片进行加载
1.下面介绍ImageLoader的使用首先下载jar包:点击打开链接
2.在application中配置ImageLoader:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory().diskCacheFileNameGenerator(new Md5FileNameGenerator()).diskCacheSize(50 * 1024 * 1024) // 50 Mb
.tasksProcessingOrder(QueueProcessingType.LIFO).writeDebugLogs() // Remove for release app
.build();
ImageLoader.getInstance().init(config);
3.使用ImageLoader加载图片:
public class ImageLoaderManager {
public static void loadImage(String url,ImageView imageView){
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//让图片进行内存缓存
.cacheOnDisk(true)//让图片进行sdcard缓存
.showImageForEmptyUri(R.mipmap.pic_default)//图片地址有误
.showImageOnFail(R.mipmap.pic_default)//当图片加载出现错误的时候显示的图片
.showImageOnLoading(R.mipmap.pic_default)//图片正在加载的时候显示的图片
.build();
ImageLoader.getInstance().displayImage(url,imageView,options);
}
}
这样就可以加载出网络图片,并且加载的图片会存到缓存中第二次就会直接取缓存图片。
关注订阅号: