Fresco简单的使用—SimpleDraweeView

本文介绍Fresco库的基本使用方法,包括如何配置圆形图、圆角图、淡入淡出动画等特性,并提供了详细的代码示例。

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

Fresco是一个第三方库,github官网地址:https://github.com/facebook/fresco

 

    • 百学须先立志—学前须知:

      在我们平时加载图片(不管是下载还是加载本地图片…..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该呈现正在加载时的图像,当图片加载失败时应该呈现图片加载时的图像,当我们重新加载这张图片时,应该呈现重试时图像,直到这张图片加载完成。这些繁琐并且重复的如果得不到简化的话,那将是一个开发人员的噩梦,现在好了,我们用 Facebook 出品的一个强大的图片加载组件 Fresco 几行代码就可以搞定以上问题了。

    • 尽信书,不如无书—能学到什么?

      1、SimpleDraweeView最基本的使用 
      2、SimpleDraweeView的圆形图 
      3、SimpleDraweeView的圆角图 
      4、SimpleDraweeView的缩放类型

    •  工欲善其事必先利其器—下载Fresco并导入到项目

      Fresco中文说明:http://www.fresco-cn.org/

      Fresco项目GitHub地址:https://github.com/facebook/fresco

      第一步进入 Fresco项目GitHub地址 :

      第一步

    • 第二步添加Fresco到项目工程:

      使用说明

      第三步服务及权限:

      服务及权限

    • 常见问题:

      初次使用,我们就先简单书写我们的 activity_main.xml :

      代码分析:

      初次加载

      MainActivity 实现代码:

      简单的书写完布局和实现代码之后我们来运行一下。

      报错

      运行报错了!怎么回事呢?这里啊,是因为我们没有在应用调用 setContentView() 之前进行初始化Fresco造成的;解决办法:

      修改我们的 MainActivity 里代码:

      解决办法

      再运行就没有错误发生了。

    • 占位图—placeholderImage:

      在此之前我们需要一张占位图 icon_placeholder.png 大家右键另存为即可:

      icon_placeholder

      修改我们的 activity_main.xml :

      代码说明:

      占位符

      MainActivity 无需修改,运行一下:

      占位符

    •  正在加载图—progressBarImage:

      在此之前我们需要一张正在加载图 icon_progress_bar.png 大家右键另存为即可:

      正在加载图

      修改我们刚刚书写的 activity_main.xml :

      代码说明:

      正在加载图

      更改我们的 MainActivity 里代码:

      代码分析:

      正在加载图

      运行效果图:

      正在加载图

      正在加载图本身是不可以转的,但是呢,加上了 fresco:progressBarAutoRotateInterval="5000" 属性,那么它就可以旋转了;可以看到,正在加载图一闪而过,这是因为我们加载的图片很小,网络也很好。

    • 失败图—failureImage:

      在此之前我们需要一张正在加载图 icon_failure.png 大家右键另存为即可:

      icon_failure

      修改我们刚刚书写的 activity_main.xml :

      代码分析:

      失败图代码分析

      修改我们的 MainActivity 里代码:

      代码说明:

      错误的网络图片地址

      运行效果:

      failure

    • 重试图—retryImage:

      在此之前我们需要一张正在加载图 icon_retry.png 大家右键另存为即可:

      icon_retry

      修改我们刚刚书写的 activity_main.xml :

      代码分析:

      重试图

      修改我们的 MainActivity 里代码:

      代码说明:

      重试图片

      运行效果:

      重试图效果

      注意:

      重复加载4次还是没有加载出来的时候才会显示 failureImage(失败图) 的图片

    •  淡入淡出动画—fadeDuration:

      修改我们刚刚书写的 activity_main.xml :

      代码说明:

      淡入淡出动画

      MainActivity 中的代码无需修改。

      运行效果:

      重试+进度图+失败图进度图+正确图
      淡入淡出动画正确图
    •  背景图—backgroundImage:

      这里呢,我们的背景图采用的是一个系统所提供的颜色中的一种。

      修改我们刚刚书写的 activity_main.xml :

      代码说明:

      背景图

      MainActivity 中的代码无需修改,运行效果:

      背景效果

    • 叠加图—overlayImage:

      这里呢,我们的背景图采用的是一个系统所提供的颜色中的一种。

      修改我们刚刚书写的 activity_main.xml :

      代码说明:

      叠加图

      MainActivity 中的代码无需修改。

      运行效果:

      叠加图

      从运行效果来看,叠加图在最上面,覆盖了下面的图。

    •  圆形图—roundAsCircle:

      一行代码搞定圆形图:设置roundAsCircle为true;

      修改我们刚刚书写的 activity_main.xml :

      代码说明:

      圆形图

      MainActivity 中的代码无需修改。

      运行效果:

      circle

      可以看到,从图片开始加载一直到图片下载完毕,整个图像都是圆形的。

    •  圆角图—roundedCornerRadius:

      修改我们刚刚书写的 activity_main.xml :

      代码说明:

      圆角

      MainActivity 中的代码无需修改。

      运行效果:

      圆角运行图

      可以看到,从图片开始加载一直到图片下载完毕,整个图像都是圆角的。

      圆角属性圆角属性
      左上角是否为圆角fresco:roundTopLeft="false"右上角是否为圆角fresco:roundTopRight="false"
      topLefttopRight
      bottomLeftbottomRight
      左下角是否为圆角fresco:roundBottomLeft="false"右下角是否为圆角fresco:roundBottomRight="false"

      注意:

      当我们同时设置图像显示为圆形图像和圆角图像时,只会显示为圆形图像。

      同时设置圆形圆角

    •  圆形圆角边框宽度及颜色—roundingBorder:

      修改我们刚刚书写的 activity_main.xml :

      代码说明:

      圆形圆角边框

      MainActivity 中的代码无需修改。

      运行效果(左边显示的是带边框的圆形图像,右边显示的是带边框的圆角图像):

      圆形边框圆角边框

    •  圆形或圆角图像底下的叠加颜色—roundWithOverlayColor:

      修改我们刚刚书写的 activity_main.xml :

      代码说明:

      底下的颜色

      MainActivity 中的代码无需修改。

      运行效果(左边为圆形效果,右边为圆角效果):

      圆形效果圆角效果

    • 缩放类型—ScaleType:

      类型描述
      center居中,无缩放
      centerCrop保持宽高比缩小或放大,使得两边都大于或等于显示边界。居中显示。
      focusCrop同centerCrop, 但居中点不是中点,而是指定的某个点
      centerInside使两边都在显示边界内,居中显示。如果图尺寸大于显示边界,则保持长宽比缩小图片。
      fitCenter保持宽高比,缩小或者放大,使得图片完全显示在显示边界内。居中显示
      fitStart同上。但不居中,和显示边界左上对齐
      fitEnd同fitCenter, 但不居中,和显示边界右下对齐
      fitXY不保存宽高比,填充满显示边界
      none如要使用tile mode显示, 需要设置为none

      推荐使用:focusCrop 类型                Fresco中文说明对这一点也有详情的说明: 缩放

    •  
    • 总结:

      XML属性意义
      fadeDuration淡入淡出动画持续时间(单位:毫秒ms)
      actualImageScaleType实际图像的缩放类型
      placeholderImage占位图
      placeholderImageScaleType占位图的缩放类型
      progressBarImage进度图
      progressBarImageScaleType进度图的缩放类型
      progressBarAutoRotateInterval进度图自动旋转间隔时间(单位:毫秒ms)
      failureImage失败图
      failureImageScaleType失败图的缩放类型
      retryImage重试图
      retryImageScaleType重试图的缩放类型
      backgroundImage背景图
      overlayImage叠加图
      pressedStateOverlayImage按压状态下所显示的叠加图
      roundAsCircle设置为圆形图
      roundedCornerRadius圆角半径
      roundTopLeft左上角是否为圆角
      roundTopRight右上角是否为圆角
      roundBottomLeft左下角是否为圆角
      roundBottomRight右下角是否为圆角
      roundingBorderWidth圆形或者圆角图边框的宽度
      roundingBorderColor圆形或者圆角图边框的颜色
      roundWithOverlayColor圆形或者圆角图底下的叠加颜色(只能设置颜色)
      viewAspectRatio控件纵横比
    • GitHub:

      本教程最终项目GitHub地址:https://github.com/scp504677840/Fresco

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值