imageloader加载网络图片
2015-05-15 11:51
423 查看
一、简单介绍
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);
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);
相关文章推荐
- Android使用ImageLoader异步加载网络图片(一)读取单张图片
- ImageLoader加载网络图片初始化类
- ViewPager无限轮播,加载网络数据,ImageLoader加载图片并缓存到SD卡上
- 使用Volley框架的ImageLoader加载网络图片
- Android imageloader加载网络,本地图片方式
- ImageLoader加载网络图片无限轮播
- ViewPager无限轮播,加载网络数据,ImageLoader加载图片并缓存到SD卡上
- 网络请求图片异步加载(ImageLoader)+多条目加载显示,案例:
- 基于AsyncTask的ImageLoader网络图片加载
- Android UI-开源框架ImageLoader完美使用+listview加载网络图片与下载
- [置顶] 使用ImageLoader加载网络图片时,如何获取加载进度,如何设置进度条
- 网络图片加载框架Universal-ImageLoader和Picasso优缺点对比
- Android使用ImageLoader异步加载网络图片(二)结合listview
- Android使用Universal-ImageLoader在ListView中加载网络图片简单示例
- 分享github上的网络是否连接工具类NetWorkUtil及图片加载工具类ImageLoader
- Android 主流网络图片加载缓存库框架Universal-ImageLoader的使用
- 使用Imageloader异步加载网络图片
- 使用Volley框架的ImageLoader加载网络图片
- Android菜鸟练习第三课 ImageLoader通过displayImage()方法加载网络图片
- 使用Volley框架的ImageLoader加载网络图片