Fresco可以实现:
1)占位图2)失败图
3)加载时的图片以及动画
4)图片背景图
5)圆形以及圆角 自定义角度和哪个角
6)点击重试图片重新加载网络图片
7)动画
8)图片缩放类型
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto" //注意命名空间
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/simpleDraweeView"
fresco:placeholderImage="@mipmap/ic_launcher"
fresco:placeholderImageScaleType="fitCenter"
fresco:progressBarImage="@mipmap/icon_progress_bar"
fresco:progressBarAutoRotateInterval="3000"
fresco:progressBarImageScaleType="centerCrop"
fresco:actualImageScaleType="centerCrop"
fresco:failureImage="@mipmap/icon_failure"
fresco:failureImageScaleType="centerCrop"
fresco:retryImage="@mipmap/icon_retry"
fresco:retryImageScaleType="center"
fresco:fadeDuration="3000"
fresco:backgroundImage="@android:color/holo_orange_dark"
fresco:roundedCornerRadius="30dp"
fresco:roundTopLeft="true"
fresco:roundTopRight="true"
fresco:roundBottomLeft="true"
fresco:roundBottomRight="false"
fresco:roundWithOverlayColor="@android:color/holo_blue_light"
fresco:roundingBorderWidth="2dp"
fresco:roundingBorderColor="@android:color/background_dark"
android:layout_width="300dp" //Drawees不支持包裹wrap_content
android:layout_height="300dp" />
</RelativeLayout>
3)MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Fresco.initialize(this);//注意:在添加布局前初始化Fresco
setContentView(R.layout.activity_main);
SimpleDraweeView simpleDraweeView = (SimpleDraweeView) findViewById(R.id.simpleDraweeView);
Uri uri = Uri.parse("http://ope.lingyi365.com:5602/group1/M00/08/57/rBJxwFiab_mANq0fAAI8t3UoMIk911.jpg");
simpleDraweeView.setImageURI(uri);//加载图片
//设置点击重试图片,4次加载不成功显示失败的图片
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(uri)//要加载的uri地址
.setTapToRetryEnabled(true) //开启点击重试
.setOldController(simpleDraweeView.getController())//设置旧的Cotroller
.build();//构建
simpleDraweeView.setController(controller);
}
}
注意:
1)//设置圆角图片
fresco:roundAsCircle="true"
2)设置圆形和角度同时存在,只会加载圆形
补充:
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 | 控件纵横比 |
类型 | 描述 |
---|---|
center | 居中,无缩放 |
centerCrop | 保持宽高比缩小或放大,使得两边都大于或等于显示边界。居中显示。 |
focusCrop | 同centerCrop, 但居中点不是中点,而是指定的某个点 |
centerInside | 使两边都在显示边界内,居中显示。如果图尺寸大于显示边界,则保持长宽比缩小图片。 |
fitCenter | 保持宽高比,缩小或者放大,使得图片完全显示在显示边界内。居中显示 |
fitStart | 同上。但不居中,和显示边界左上对齐 |
fitEnd | 同fitCenter, 但不居中,和显示边界右下对齐 |
fitXY | 不保存宽高比,填充满显示边界 |
none | 如要使用tile mode显示, 需要设置为none |