您的位置:首页 > 理论基础 > 计算机网络

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息