`

Android-Universal-Image-Loader介绍

 
阅读更多

Android-Universal-Image-Loader是Android是用的比较多的一款开源的图片下载库,先看看GitHub上的介绍。

 

资源类型:

"http://site.com/image.png" // from Web

"file:///mnt/sdcard/image.png" // from SD card

"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)

"content://media/external/images/media/13" // from content provider

"content://media/external/video/media/13" // from content provider (video thumbnail)

"assets://image.png" // from assets

"drawable://" + R.drawable.img // from drawables (non-9patch images)

 

常用方法:

// Get singleton instance

ImageLoader imageLoader = ImageLoader.getInstance();

 


//在imageView显示资源中的图片

imageLoader.displayImage(imageUri, imageView);


//下载资源中的图片

imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {

    @Override

    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

        // Do whatever you want with Bitmap

    }

});

 


//异步下载资源

Bitmap bmp = imageLoader.loadImageSync(imageUri);

 


//监听下载进度

imageLoader.displayImage(imageUri, imageView, options, 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) {

        ...

    }

    @Override

    public void onLoadingCancelled(String imageUri, View view) {

        ...

    }

}, new ImageLoadingProgressListener() {

    @Override

    public void onProgressUpdate(String imageUri, View view, int current, int total) {

        ...

    }

});

 


//下载图片后转化为指定宽高

ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size

imageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {

    @Override

    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

        // Do whatever you want with Bitmap

    }

});

 


//异步下载

ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size

Bitmap bmp = imageLoader.loadImageSync(imageUri, targetSize, options);

 


//缓存相关的方法

DiskCacheUtils.findInCache(String imageUri, DiskCache diskCache)

DiskCacheUtils.removeFromCache(String imageUri, DiskCache diskCache)

 

工作流程:

常用配置:

全局初始化此配置项

ImageLoaderConfiguration config = new ImageLoaderConfiguration  

.Builder(context)  

//线程池内加载的数量

.threadPoolSize(3)  

.threadPriority(Thread.NORM_PRIORITY - 2)

.tasksProcessingOrder(QueueProcessingType.LIFO)

//同一张图片不同大小内存只缓存一张

.denyCacheImageMultipleSizesInMemory() 

//内存缓存的实现memory.impl包中提供多种实现方式

.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))

.memoryCacheSize(2 * 1024 * 1024)    

//内存缓存文件的最大长宽

.memoryCacheExtraOptions(480, 800)

//缓存的文件数量

.discCacheFileCount(100)

.discCacheSize(50 * 1024 * 1024)

//文件缓存的文件名生成方式  

.discCacheFileNameGenerator(new Md5FileNameGenerator())

//文件缓存路径

.discCache(new UnlimitedDiscCache(cacheDir))

//默认的Image显示配置

 .defaultDisplayImageOptions(DisplayImageOptions.createSimple())

//设置下载器 connectTimeout (5 s),readTimeout (30 s)超时时间

 .imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000))

//仅测环境可配置

 .writeDebugLogs()  

 .build();//开始构建

 

ImageLoader.getInstance().init(config);

文件缓存的目录可以通过ImageLoader的StorageUtils获取

File cacheDir = StorageUtils.getOwnCacheDirectory(argContext, "ImgCache");

以上配置都有默认配置:

ImageLoaderConfiguration.ImageLoaderConfiguration.createDefault()

 

imageLoader显示图片配置项

DisplayImageOptions options;  

options = new DisplayImageOptions.Builder()

//设置图片在下载期间显示的图片  

.showImageOnLoading(R.drawable.ic_launcher)

//设置图片Uri为空或是错误的时候显示的图片

.showImageForEmptyUri(R.drawable.ic_launcher)

//设置图片加载/解码过程中错误时候显示的图片

.showImageOnFail(R.drawable.ic_launcher)

//设置下载的图片是否缓存在内存中

.cacheInMemory(true)

//设置下载的图片是否缓存在SD卡中  

.cacheOnDisc(true)

//是否考虑JPEG图像EXIF参数(旋转,翻转)

.considerExifParams(true)

//设置图片以如何的编码方式显示

.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)

//设置图片的解码类型

.bitmapConfig(Bitmap.Config.RGB_565)

//设置图片的解码配置

.decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)

//int delayInMillis为你设置的下载前的延迟时间

.delayBeforeLoading(int delayInMillis)

//设置图片加入缓存前,对bitmap进行设置  

//.preProcessor(BitmapProcessor preProcessor)

//设置图片在下载前是否重置,复位

.resetViewBeforeLoading(true)  

//是否设置为圆角,弧度为多少

.displayer(new RoundedBitmapDisplayer(20))

//是否图片加载好后渐入的动画时间

.displayer(new FadeInBitmapDisplayer(100))  

.build();//构建完成 

 

设置图片的缩放方式

imageScaleType(ImageScaleType imageScaleType)

              EXACTLY :图像将完全按比例缩小的目标大小

              EXACTLY_STRETCHED:图片会缩放到目标大小完全

              IN_SAMPLE_INT:图像将被二次采样的整数倍

              IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小

              NONE:图片不会调整

 

设置图片的显示效果

displayer(BitmapDisplayer displayer)

            RoundedBitmapDisplayer(int roundPixels)设置圆角图片

            FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间

   SimpleBitmapDisplayer()正常显示一张图片

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics