Fresco是一个图片加载框架
Facebook出品的一个强大的图片加载组件Fresco
Fresco中文说明:http://www.fresco-cn.org/
Fresco项目GitHub地址:https://github.com/facebook/fresco
Fresco在使用时我们需要加入的权限:
<uses-permission android:name="android.permission.INTERNET"/>
Fresco要添加的依赖(可根据实际情况来导入)
// Fresco所需依赖(一般使用这个)
compile 'com.facebook.fresco:fresco:0.12.0'
// 在 API < 14 上的机器支持 WebP 时,需要添加
compile 'com.facebook.fresco:animated-base-support:0.12.0'
// 支持 GIF 动图,需要添加
compile 'com.facebook.fresco:animated-gif:0.12.0'
// 支持 WebP (静态图+动图),需要添加
compile 'com.facebook.fresco:animated-webp:0.12.0'
compile 'com.facebook.fresco:webpsupport:0.12.0'
// 仅支持 WebP 静态图,需要添加
compile 'com.facebook.fresco:webpsupport:0.12.0'
并且在使用之前要对fresco进行初始化:一般初始化的东西习惯的放在全局来进行初始化
例:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//fresco的初始化
Fresco.initialize(this);
}
}
注意:在布局文件中width和height不能设置为warp_parent
例:
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/img"
fresco:roundAsCircle="true"
android:layout_gravity="center"
android:layout_width="100dp"
android:layout_height="100dp" />
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控件纵横比
具体的体现观看fresco的xml例子
但是Fresco 也有不足的地方:
不支持 wrap_content ,必须显示的指定 view 的长宽
不会按照 view 的尺寸,动态调整图片宽高尺寸
res 资源只支持真正的图片资源,xml 的不行。若需要的话,可以设置为占位图,加载资源设为 null 即可
支持多图请求,相当于 Glide 的缩略图,但是相比 Glide 的缩略图设置要差很多,多图请求不是并发,是先后顺序,不能设置原图为缩略图然后指定尺寸和缩略倍数
使用特有的 view 来显示图片,侵入性强
在 4.X 版本不兼容 SVG 矢量图,即便是按照 SVG 4.X 版本兼容写,把 SVG 图片包裹到 seletor 里面一样也是不行。