【Android】Universal Image Loader使用简介

ImageLoader
是具体下载图片,缓存图片,显示图片的具体执行类,它有两个具体的方法displayImage(…)、loadImage(…),但是其实最终他们的实现都是displayImage(…)。

ImageLoaderConfiguration

是针对图片缓存的全局配置,主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置。

使用说明

//这里的路径可以自定义
 File cacheDir = StorageUtils.getCacheDirectory(context);
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                // 默认等于你的屏幕尺寸,设备屏幕宽高
                .memoryCacheExtraOptions(480, 800)
                // 在将下载的图片保存到你的sd卡之前会重新计算,压缩。
                // 这个属性不要滥用,只有你在对应的需求时再用,因为他会使你的ImageLoader变的很慢。
                .diskCacheExtraOptions(480, 800, null)
                //用于执行从源获取图片任务的 Executor,为configuration中的 taskExecutor,
                // 如果为null,则会调用DefaultConfigurationFactory.createExecutor(…)根据配置返回一个默认的线程池。
                .taskExecutor(null)
                //用于执行从缓存获取图片任务的 Executor,为configuration中的 taskExecutorForCachedImages,
                // 如果为null,则会调用DefaultConfigurationFactory.createExecutor(…)根据配置返回一个默认的线程池。
                .taskExecutorForCachedImages(null)
                // 表示核心池大小(最大并发数) 默认为3
                .threadPoolSize(3)
                // 线程优先级,默认Thread.NORM_PRIORITY - 2
                .threadPriority(Thread.NORM_PRIORITY - 2)
                // 任务进程的顺序,默认为:FIFO 先进先出
                .tasksProcessingOrder(QueueProcessingType.FIFO)
                //设置内存缓存不允许缓存一张图片的多个尺寸,默认允许。
                .denyCacheImageMultipleSizesInMemory()
                //图片内存缓存
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
                //memoryCacheSize 为 0,则设置该内存缓存的最大字节数为 App 最大可用内存的 1/8。
                .memoryCacheSize(2 * 1024 * 1024)
                // 创建最大的内存缓存百分比,默认为 13%
                .memoryCacheSizePercentage(13)
                // 硬盘缓存路径,默认为StorageUtils.getCacheDirectory(context)
                .diskCache(new UnlimitedDiskCache(cacheDir))
                //硬盘缓存大小
                .diskCacheSize(50 * 1024 * 1024)
                //缓存文件数量
                .diskCacheFileCount(100)
                // 硬盘缓存文件名生成器,默认为哈希文件名生成器
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
                // 创建图片下载器,默认是BaseImageDownloader
                .imageDownloader(new BaseImageDownloader(context))
                // 图片解码器,负责将图片输入流InputStream转换为Bitmap对象
                .imageDecoder(new BaseImageDecoder(true))
                // 图片显示的配置项。比如加载前、加载中、加载失败应该显示的占位图片,图片是否需要在磁盘缓存,是否需要在内存缓存等。
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
                //是否显示调试log信息
                .writeDebugLogs() 
                .build();
		ImageLoader.getInstance().init(config);

DisplayImageOptions

用于指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理。

从三者的协作关系上看,他们有点像厨房规定、厨师、客户个人口味之间的关系。ImageLoaderConfiguration就像是厨房里面的规定,每一个厨师要怎么着装,要怎么保持厨房的干净,这是针对每一个厨师都适用的规定,而且不允许个性化改变。ImageLoader就像是具体做菜的厨师,负责具体菜谱的制作。DisplayImageOptions就像每个客户的偏好,根据客户是重口味还是清淡,每一个imageLoader根据DisplayImageOptions的要求具体执行。

使用说明

DisplayImageOptions options = new DisplayImageOptions.Builder()
        // 设置图片在下载期间显示的图片
                .showImageOnLoading(R.drawable.ic_stub)
                // 设置图片Uri为空或是错误的时候显示的图片
                .showImageForEmptyUri(R.drawable.ic_stub)
                // 设置图片加载/解码过程中错误时候显示的图片
                .showImageOnFail(R.drawable.ic_error)
                // 设置下载的图片是否缓存在内存中
                .cacheInMemory(false)
                // 设置下载的图片是否缓存在SD卡中
                .cacheOnDisc(true)
                // 保留图片文件头信息
                .considerExifParams(true)
                // 设置图片以如何的编码方式显示
                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
                // 设置图片的解码类型
                .bitmapConfig(Bitmap.Config.RGB_565)
                // .decodingOptions(android.graphics.BitmapFactory.Options
                // decodingOptions)//设置图片的解码配置
                .considerExifParams(true)
                // 设置图片下载前的延迟
                .delayBeforeLoading(100)// int
                // delayInMillis为你设置的延迟时间
                // 设置图片加入缓存前,对bitmap进行设置
                // .preProcessor(BitmapProcessor preProcessor)
                .resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位
                // .displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角,弧度为多少
                .displayer(new FadeInBitmapDisplayer(100))// 淡入
                .build();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值