UIL图片异步加载库的使用
使用
作为图片加载库必须设置网络、SD卡权限
1 | <uses-permission android:name="android.permission.INTERNET" /> |
- 设置缓存目录
1 | File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(),"imageloader/Cache"); |
配置ImageLoaderConfiguration
1 | ImageLoaderConfiguration config = new ImageLoaderConfiguration |
加载
1 | // 获取ImageLoader实例 |
不需要的可以不做配置
- .imageScaleType(ImageScaleType imageScaleType) 设置图片的缩放方式
EXACTLY:图像将完全按比例缩小到目标大小
EXACTLY_STRETCHED:图片会缩放到目标大小
IN_SAMPLE_INT:图像将被二次采样的整数倍
IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
NONE:图片不会调整 - .displayer(BitmapDisplayer displayer) 是设置 图片的显示方式
RoundedBitmapDisplayer(int roundPixels) 设置圆角图片
FakeBitmapDisplayer() 这个类什么都没做
FadeInBitmapDisplayer(int durationMillis) 设置图片渐显的时间
SimpleBitmapDisplayer() 正常显示一张图片
1 | ImageLoader.getInstance().displayImage(imageUrl, imageView); // imageUrl代表图片的URL地址,imageView代表承载图片的IMAGEVIEW控件 |
加载监听
1 | imageLoader.displayImage(imageUrl, imageView, options, new ImageLoadingListener() { |
加载监听进度
1 | imageLoader.displayImage(imageUrl, imageView, options, new ImageLoadingListener() { |
注意事项
- 权限
- 必须初始化ImageLoader.getInstance().init(config)
- ImageLoader是根据ImageView的height,width确定图片的宽高
- 如果经常出现OOM
- ①减少配置之中线程池的大小,
.(.threadPoolSize)推荐1-5;- ②使用
.bitmapConfig(Bitmap.config.RGB_565)代替ARGB_8888;
- ②使用
- ③使用
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者try.imageScaleType(ImageScaleType.EXACTLY);- ④避免使用
RoundedBitmapDisplayer.他会创建新的ARGB_8888格式的Bitmap对象; - ⑤使用
.memoryCache(new WeakMemoryCache()),不要使用.cacheInMemory();
- ④避免使用
- ①减少配置之中线程池的大小,
其他
1 | String imageUri = "http://site.com/image.png"; // from Web |

