一、简单介绍
imageloader 即 Android-Universal-Image-Loader是一个开源的UI组件程序。开发人员使用它,可是很轻松的加载网络上的图片,它具体一下优点:
支持多线程图片加载提供丰富的细节配置,比如线程池大小,HTPP请求项,内存和磁盘缓存,图片显示时的参数配置等等;提供双缓存支持加载过程的监听;提供图片的个性化显示配置接口;
二、使用实例
例如,最近在做webRTC的一个项目,服务器上创建房间后,需要将房间信息生成一个二维码,客户端需要将此二维码显示出来。服务器端生成二维码后,给我的客户端返回一个下载地址,如http://***.***.***.***/getQr?roomName=" + params.roomId + "&passwd=" + params.clientId,这是一个下载地址,并不是一个服务器上图片的地址。把这个地址放在浏览器中,立即可以显示一张图片,因为浏览器使用http请求把此下载地址的图片加载过来了。
那么对于android 客户端而言,此地址不是一张图片,当前不能直接使用imageview.setBackground(new BitmapDrawable(imageAddre)) 这个来直接显示此二维码。
所以,要想解决此问题,需要用来开源的Imageloader。
方案:使用ImageLoader加载网络图片
1、创建imageLoader对象
ImageLoader imageLoader = ImageLoader.getInstance();//注意,imageloader使用的是单例模式,
2、初始化
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()).build();
imageLoader.init(config);
config可以自己配置:如:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480, 800) // default = device screen dimensions
.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)
.taskExecutor(...)
.taskExecutorForCachedImages(...)
.threadPoolSize(3) // default
.threadPriority(Thread.NORM_PRIORITY - 1) // default
.tasksProcessingOrder(QueueProcessingType.FIFO) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 1024 1024))
.memoryCacheSize(2 1024 1024)
.memoryCacheSizePercentage(13) // default
.discCache(new UnlimitedDiscCache(cacheDir))// default
.discCacheSize(50 1024 1024) // 缓冲大小
.discCacheFileCount(100) // 缓冲文件数目
.discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
.imageDownloader(new BaseImageDownloader(context)) // default
.imageDecoder(new BaseImageDecoder()) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs()
.build();
3、imageloader加载图片
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.two_dimension_codel) // image在加载过程中,显示的图片
.showImageForEmptyUri(R.drawable.two_dimension_codel) // empty URI时显示的图片
.showImageOnFail(R.drawable.two_dimension_codel) // 不是图片文件 显示图片
.resetViewBeforeLoading() // default
.delayBeforeLoading(1000)
.cacheInMemory() // default 不缓存至内存
.cacheOnDisc() // default 不缓存至手机SDCard
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)// default
.bitmapConfig(Bitmap.Config.RGB_565) // default
.displayer(new SimpleBitmapDisplayer()) // default 可以设置动画,比如圆角或者渐变
//.displayer(new RoundedBitmapDisplayer(200))
.displayer(new FadeInBitmapDisplayer(500))//是否图片加载好后渐入的动画时间
.handler(new Handler()) // default
.build();
imageLoader.displayImage(imageStr, imageview,options);