本文主要是介绍ImageLoader 配置解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
整理一下关于ImageLoader的相关配置,为了后面知道这些是如何工作和其目的。
https://github.com/nostra13/Android-Universal-Image-Loader 这是ImageLoader的GitHub地址,若有其他不懂的,可以看这里,包括原理,用法示例等等。
全局配置,如下:
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).memoryCacheSize((int) (Runtime.getRuntime().maxMemory() / 8)).memoryCacheExtraOptions(480, 800) // 这个属性好像没有什么用,不用管它,一般不去设置.diskCacheExtraOptions(480, 800, null) // 这个也没有啥作用,不设置就行了.imageDownloader(new BaseImageDownloader(this)) // default 网络图片下载器,可以设置超时时间和连接时间.imageDecoder(new BaseImageDecoder(false)) // default 图片解码器,负责将图片输入流 InputStream 转换为 Bitmap 对象,不是图片解密,只是把流转换为bitmap.defaultDisplayImageOptions(DisplayImageOptions.createSimple()).diskCache(new UnlimitedDiscCache(new File(""))) // 确定文件缓存策略.diskCacheSize(50 * 1024 * 1024) // 大小.diskCacheFileCount(100) // 数量.memoryCache(new LruMemoryCache(5 * 1024 * 1024)) // 定义自己的内存缓存策略.memoryCacheSize(5 * 1024 * 1024) // 内存缓存大小.threadPoolSize(3) // 线程数量.threadPriority(Thread.NORM_PRIORITY - 1) //降低线程优先级,保证UI主线程不受太大影响.writeDebugLogs().build();ImageLoader.getInstance().init(configuration);
针对每次显示图片的Display Options配置,如下:
public static synchronized DisplayImageOptions getDeviceListCoverImageOptions() {if (mDeviceListImageOptions == null) {mDeviceListImageOptions = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable.device_cover_default_icon).showImageOnFail(R.drawable.device_cover_default_icon).showImageOnLoading(R.drawable.device_cover_default_icon).considerExifParams(true).cacheInMemory(true).cacheOnDisk(true).imageScaleType(EXACTLY_STRETCHED).displayer(new RoundedBitmapDisplayer(20)).build();}return mDeviceListImageOptions;}
这是一个一般的display options 设置的代码示例,官方文档中给出的所有属性如下:
// DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.
// See the sample project how to use ImageLoader correctly.
DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_stub) // resource or drawable.showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable.showImageOnFail(R.drawable.ic_error) // resource or drawable.resetViewBeforeLoading(false) // default.delayBeforeLoading(1000).cacheInMemory(false) // default.cacheOnDisk(false) // default.preProcessor(...).postProcessor(...).extraForDownloader(...).considerExifParams(false) // default.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default.bitmapConfig(Bitmap.Config.ARGB_8888) // default.decodingOptions(...).displayer(new SimpleBitmapDisplayer()) // default.handler(new Handler()) // default.build();
- resetViewBeforeLoading(false) // default 设置图片在下载前是否重置,复位 .
- delayBeforeLoading(1000) //下载前的延迟时间 一般没用着,不用管它;
- preProcessor(...) .postProcessor(...) 这一般情况下也没有去设置,不用太关注;
- considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转);
- bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型;
- bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型;
- displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角,弧度为多少
- displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间
1 2 3点其实用不太着,不用太关注;
imageScaleType(ImageScaleType imageScaleType) 是设置 图片的缩放方式,缩放类型mageScaleType:
- EXACTLY :图像将完全按比例缩小的目标大小
- EXACTLY_STRETCHED:图片会缩放到目标大小完全
- IN_SAMPLE_INT:图像将被二次采样的整数倍
- IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
- NONE:图片不会调整
这里的ImageScaleType 其实可以用ImageView自带的scaleType 去替代,个人觉得scaleType比imageScaleType更好;
.displayer(BitmapDisplayer displayer) 是设置 图片的显示方式 ,显示方式displayer:
- RoundedBitmapDisplayer(int roundPixels)设置圆角图片
- FakeBitmapDisplayer()这个类什么都没做
- FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间
- SimpleBitmapDisplayer()正常显示一张图片
补充几点注意点:
1.displayer(new RoundedBitmapDisplayer(20)) 这里的20 单位是dp, 不是px ,不用去转换;
2.如果要显示圆形图片,可以用自定义的CircleImageView去装载图片,或者是 displayer(new RoundedBitmapDisplayer(90))或者360 ,自己没有试验,不知道改变圆角大小的方式行不行的通。
这篇关于ImageLoader 配置解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!