Fresco源码结构解析

本文详细介绍了Facebook的开源Android图片加载库Fresco,包括其支持的数据源、内存缓存机制、格式支持以及关键类如Fresco、ImagePipelineConfig和DraweeController的使用。通过实例展示了如何初始化、加载图片到ImageView,以及Fresco的结构,如MVC模式和内存结构。Fresco具有内存优化和生命周期管理等特点,适用于复杂的图片显示需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                             Fresco源码结构解析

                                                                                                        优快云: tony_851122

  • 一,概述

1,FaceBook开源的Android平台图片加载库,ReactNative的Android图片库

2,支持从网络,ContentProvider,本地存储,Asset,Resource数据源加载图片

3,两级内存缓存,Memory&Disk

4,支持JPEG,PNG,Progressive JPEG,Gif,WebP格式

  1. Support Android2.3 and later
  2. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值