项目开发中,常常会出现一个很难去解决的问题 - OOM。每个程序员说起oom第一反应都是很头疼,从最先的memoryCache与diskCache二级缓存的实现以及软引用、图片压缩的实现,到后来出现的xutils、universal-image-loader框架,知道后来的volley都不能有效的解决这个问题,所以今年来自Facebook的Fresco框架应运而生,通过C来控制图片加载的效率以及内存占用,比其他框架好了不止一筹。
想了解Fresco框架配置请看这里:点击打开链接
原文地址:http://www.tqwhcm.com/blog-192385-59640.html
xmlns:fresco="http://schemas.android.com/apk/res-auto"
2、SimpleDraweeView添加网络图片资源,比较简单
Uri uri = Uri.parse("图片的网络url");
mDraweeView.setImageURI(uri);
3、很多时候,需要显示图片呈圆角的,可以通过以下设置
public static void setRoundRadius(FrescoImageView iv, float radius) {
RoundingParams params = new RoundingParams();
params.setCornersRadius(radius);
iv.getHierarchy().setRoundingParams(params);
}
4、有些时候,我们需要设置默认显示的图片,以便于没有图片或加载错误时显示,默认不设置failureImage时, 加载失败图片与默认图片一致
public static void setFrescoParam(FrescoImageView iv, int defaultImg,ScaleType scalType) {
GenericDraweeHierarchy mHierarchy = iv.getHierarchy();
mHierarchy.setActualImageScaleType(scalType);
mHierarchy.setPlaceholderImage(defaultImg);
}
5、这里需要说明一下,通过Java代码设置的ScalType 只对图片资源有效,不包括默认图片以及加载失败图片, 所以需要设置默认图片或加载失败图片缩放,请在xml文件中配置
fresco:failureImage="@drawable/money_default_img"
fresco:failureImageScaleType="fitXY"
fresco:placeholderImage="@drawable/money_default_img"
fresco:placeholderImageScaleType="fitXY"
6、设置宽高比例
mDraweeView.setAspectRatio(1.3);
7、设置动态显示,Fresco很好的支持了Gif图片的显示
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url)).build();
DraweeController controller = Fresco.newDraweeControllerBuilder().setImageRequest(request).setAutoPlayAnimations(true).build();
fiv.setController(controller);