Fresco源码结构解析
优快云: tony_851122
- 一,概述
1,FaceBook开源的Android平台图片加载库,ReactNative的Android图片库
2,支持从网络,ContentProvider,本地存储,Asset,Resource数据源加载图片
3,两级内存缓存,Memory&Disk
4,支持JPEG,PNG,Progressive JPEG,Gif,WebP格式
- Support Android2.3 and later
- gitHub地址和文档地址
https://github.com/facebook/fresco
https://www.fresco-cn.org/docs
- 二,使用例子
2.1入口类
入口类是“Fresco”,单例模式。
2.1.1 初始化接口
initialize(Context context,
@Nullable ImagePipelineConfig imagePipelineConfig,
@Nullable DraweeConfig draweeConfig)
2.1.2 ImagePipelineConfig
a)缓存的参数,CacheKeyFactory
b)用什么netFetcher(okHttp)
c)是否支持webpng
d)定制imageDecoder
2.1.3 DraweeConfig
a)customDrawableFactories,定制显示的Drawable
b)PipelineDraweeControllerFactory,定制DraweeView的ControllerFactory
2.2 加载一个图片到ImageView例子
2.2.1 构建图层DraweeHierarchy
ImageView targetView;
GenericDraweeHierarchyBuilder genericDraweeHierarchyBuilder =
new GenericDraweeHierarchyBuilder(context.getResources()).
setPlaceholderImage(placeholderDrawable).
setActualImageScaleType(CenterCrop).
setBackgroun(backGroundDrawable).
setDesiredAspectRatio(4/3);
GenericDraweeHierarchy hierarchy = genericDraweeHierarchyBuilder.build();
targetView.setImageDrawable(mDraweeHolder.getTopLevelDrawable());
2.2.2 构建请求同时将其设置到controller中