简单实现Fresco圆形、圆角、渐进式、动图显示

本文介绍了如何在Android应用中使用Fresco库来加载图片,包括静态和动图的加载,以及实现圆形、圆角、渐进式加载、动图显示等功能。在XML布局中详细配置了SimpleDraweeView的各种属性,如淡入淡出效果、占位图、错误图、进度条等,还展示了如何设置圆形和圆角图片。

1.导依赖

//静态依赖
implementation ‘com.facebook.fresco:fresco:1.11.0’
//动图依赖
implementation ‘com.facebook.fresco:animated-gif:1.10.0’

2. MyApplication.java
public class MyApplication extends Application {

@Override
public void onCreate() {
	super.onCreate();
	Fresco.initialize(this);
}

}

3.MainActivity

public class MainActivity extends AppCompatActivity {

private Uri uri =     Uri.parse("http://wx1.sinaimg.cn/wap720/0069vPp2ly1fhsuabugnsj30k00c0dh4.jpg");


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    yuanXing();
    yuanJiao();
    jianJin();
    dongTu();
}


//圆形

private void yuanXing() {
    RoundingParams params = RoundingParams.asCircle();
    imgSim.getHierarchy().setRoundingParams(params);
    imgSim.setImageURI(uri);
}
//圆角
private void yuanJiao() {
    RoundingParams params = RoundingParams.fromCornersRadii(30,30,30,30);
    imgSim.getHierarchy().setRoundingParams(params);
    imgSim.setImageURI(uri);
}

//渐进
private void jianJin() {
    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
            .setProgressiveRenderingEnabled(true)
            .build();
    AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
            .setOldController(imgSim.getController())
            .setImageRequest(request)
            .build();
    imgSim.setController(controller);
}
//高斯模糊
private void gaoSi() {
    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
            .setPostprocessor(new IterativeBoxBlurPostProcessor(3,3))
            .build();
    AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
            .setOldController(imgSim.getController())
            .setImageRequest(request)
            .setAutoPlayAnimations(true)
            .setTapToRetryEnabled(true)
            .build();
    imgSim.setController(controller);
}
//动图
private void dongTu() {
    Uri uri = Uri.parse("http://img.mp.itc.cn/upload/20161115/6163765431c44d538b37d6efb32ee885_th.jpg");
    AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
            .setOldController(imgSim.getController())
            .setUri(uri)
            .setAutoPlayAnimations(true)
            .setTapToRetryEnabled(true)
            .build();
    imgSim.setController(controller);
}
  1. XML布局 SimpleDraweeView控件的属性

    fresco:fadeDuration=“300” // 淡入淡出的持续时间
    fresco:actualImageScaleType=“focusCrop” // 实际图像的缩放类型
    fresco:placeholderImage="@color/wait_color" //占位图
    fresco:placeholderImageScaleType=“fitCenter” //占位图的缩放类型
    fresco:failureImage="@drawable/error" //下载失败显示的图片
    fresco:failureImageScaleType=“centerInside” //失败图的缩放类型
    fresco:retryImage="@drawable/retrying"
    //图片加载失败时显示,提示用户点击重新加载,重复加载4次还是没有加载出来的时 候才会显示failureImage的图片
    fresco:retryImageScaleType=“centerCrop” //重新加载的图片缩放类型
    fresco:progressBarImage="@drawable/progress_bar" //进度条图片
    fresco:progressBarImageScaleType=“centerInside”
    fresco:progressBarAutoRotateInterval=“1000”
    //进度图自动旋转间隔时间(单位:毫秒ms)
    fresco:backgroundImage="@color/blue"
    //背景图片,这里的背景图片首先被绘制
    fresco:overlayImage="@drawable/watermark"
    // 设置叠加图,在xml中只能设置一张叠加图片,如果需要多张图片的话,需要在java代码中设置哦
    fresco:pressedStateOverlayImage="@color/red"
    // 设置点击状态下的叠加图
    fresco:roundAsCircle=“false” //设置为圆形图
    fresco:roundedCornerRadius=“1dp” // 圆角半径
    fresco:roundTopLeft=“true” // 左上角是否为圆角
    fresco:roundTopRight=“false”
    fresco:roundBottomLeft=“false”
    fresco:roundBottomRight=“true”
    fresco:roundWithOverlayColor="@color/corner_color"
    fresco:roundingBorderWidth=“2dp” //边框的宽度
    fresco:roundingBorderColor="@color/border_color" //边框颜色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值