fresco 的用法 笔记

首先是依赖

//注意 官方现在提供的 12.0 版本的 依赖  这个版本的 依赖  无法实现简单版 的 高斯模糊 ~ 
//用这个高版本的
implementation 'com.facebook.fresco:fresco:1.11.0'

//gif 动态图片 需要添加的 依赖
implementation 'com.facebook.fresco:animated-gif:1.10.0'

在这里插入图片描述

xmlns:fresco="http://schemas.android.com/apk/res-auto"
首先一定要在 布局中 加载这个 将 app 改成 fresco

在这里插入图片描述

然后 导入控件
com.facebook.drawee.view.SimpleDraweeView
不要导错了包哦 另外 宽和高 的 属性 不可以写 自适应

 <com.facebook.drawee.view.SimpleDraweeView
 
       android:layout_marginLeft="20dp"
       android:layout_gravity="center"
       android:id="@+id/simp"
       android:layout_width="350dp"
       android:layout_height="350dp">

   </com.facebook.drawee.view.SimpleDraweeView>

下面详细介绍一下 XML 中属性的 用法

XML属性用法,作用
fresco:roundedCornerRadius=“10dp”设置圆角的圆滑度,单位可以是dp一类的 圆形是这个 属性会被忽略
fresco:roundingBorderWidth=“10dp”设置图片的外边框宽度
fresco:roundingBorderColor="#f00"设置外边框的颜色
fresco:roundTopLeft=“false”是否允许你的图片的左上角为圆角?
fresco:roundTopRight=“false”是否允许你的图片的右上角为圆角?
fresco:roundBottomLeft=“false”是否允许你的图片的左下角为圆角?
fresco:roundBottomRight=“false”是否允许你的图片的右下角为圆角?
fresco:roundAsCircle=“true”你的图片是否以圆形,圆形,圆形!不是圆角! 的形式出现
fresco:fadeDuration=“5000”图片以 淡出 的形式出现 单位是 毫秒 (1000 是1秒)
fresco:roundWithOverlayColor="#1eaeda"设置图片的背景颜色 如果图片没有被 圆形或者是圆角化的 话 基本是看不到的
fresco:overlayImage ="@mipmap/ic_launcher"设置叠加图 大小没办法控制 需要在图片源 做改变 并且! 这个图是在你的图片之上
fresco:backgroundImage ="@mipmap/ic_launcher"设置背景图 图片过小也会看不到 这张图置于你要显示的图片之下在背景色之上
fresco:placeholderImage="@mipmap/ic_launcher"占位图片,通常是一个小图 在你的图片下方,如果图片被加载了就看不到了(被遮住)
fresco:failureImage="@mipmap/ic_launcher"设置当网络等意外造成图片没有记载出来的时候 显示的图片
fresco:actualImageScaleType=“focusCrop”等同于android:scaleType
fresco:placeholderImage="@color/wait_color"加载中…时显示的图
fresco:placeholderImageScaleType=“fitCenter”加载中…显示图的缩放模式
fresco:failureImageScaleType=“centerInside”加载失败时显示图的缩放模式
fresco:retryImage="@drawable/retrying"重试时显示图
fresco:retryImageScaleType=“centerCrop”重试时显示图的缩放模式
fresco:progressBarImage="@drawable/progress_bar"进度条显示图
fresco:progressBarImageScaleType=“centerInside”进度条时显示图的缩放模式
fresco:progressBarAutoRotateInterval=“1000”进度条旋转时间间隔

官方的XML 介绍的比较少 目前只会这些常用的属性

重点

新建一个类,继承Appliction 需要在 Appliction中去声明 在清单文件中 要声明 千万不要忘记 给 网络权限

//设置缓存路径,磁盘缓存
        DiskCacheConfig build = DiskCacheConfig.newBuilder(this)
                .setBaseDirectoryName("image")
                .setBaseDirectoryPath(Environment.getExternalStorageDirectory())
                .build();
        //生成配置文件
        ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
                .setMainDiskCacheConfig(build)
                .build();
        Fresco.initialize(this,config);

网络加载

图片加载类型代码写法
网络加载Uri.parse( 网络路径 )
本地加载Uri.parse( “file://” +文件夹+"/"+… )
res加载Uri.parse( “res://包名(任何字符串或者留空)/” + R.drawable.ic_launcher )
//在网络 找一个 图片的 地址~
Uri uri =Uri.parse("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1543313023590&di=bb9e255302ef13884e5f6db603e5329a&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F8%2F5121d1be65259.jpg");
//通过这个找到控件
SimpleDraweeView draweeView = findViewById(R.id.simp);
//将资源赋给 控件
draweeView.setImageURI(uri);	

以上代码 加上下边 这行 代码 就可以 轻松实现 高斯模糊

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
								//参数1:重度
								//参数2:半径
                .setPostprocessor(new IterativeBoxBlurPostProcessor(40, 40))
                .build();
        AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
                .setOldController(draweeView.getController())
                .setImageRequest(request)
                .build();
        draweeView.setController(controller);

网络加载 GIF 图片

//找控件
SimpleDraweeView draweeView = findViewById(R.id.simp);
//路径
Uri uri1 =Uri.parse("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1543319171087&di=4065895f620674a0e6cc607e559f47fb&imgtype=0&src=http%3A%2F%2Fimg2.a0bi.com%2Fupload%2Fttq%2F20160604%2F1465047737627.gif");
//不多解释
AbstractDraweeController build = Fresco.newDraweeControllerBuilder()
.setUri(uri1)
.setAutoPlayAnimations(true)
.build();
draweeView.setController(build);

缩放类型

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

一个简单的小工具类

    private Uri uri ;
    private SimpleDraweeView simpleDraweeView ;
    private Activity activity;
    public FrescoUtil(Activity activity) {
        this.activity = activity;
    }

    //添加路径
    public FrescoUtil setUri(String url){
            this.uri = Uri.parse((String) url);
        return this;
    }

    //添加控件
    public FrescoUtil setView(Object o){
        if(o instanceof Integer){
            this.simpleDraweeView = activity.findViewById((Integer) o);
        }else if(o instanceof View){
            this.simpleDraweeView = (SimpleDraweeView) o;
        }
        return this;
    }

    //设置静态图
    public FrescoUtil showStaticMap(){
        simpleDraweeView.setImageURI(uri);
        return this;
    }


    //设置 加载GIF 图  并且 设置 是否 可以动
    public void showGifMap(boolean isAnima){
        AbstractDraweeController build = Fresco.newDraweeControllerBuilder()
                .setUri(uri)
                .setAutoPlayAnimations(isAnima)
                .build();
        simpleDraweeView.setController(build);
    }

    //设置高斯模糊
    public FrescoUtil setGaussianblur(int iterations , int blurRadius ){
        ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
                //参数1:重度
                //参数2:半径
                .setPostprocessor(new IterativeBoxBlurPostProcessor(iterations, blurRadius))
                .build();
        AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
                .setOldController(simpleDraweeView.getController())
                .setImageRequest(request)
                .build();
        simpleDraweeView.setController(controller);
        return this;
    }

    //设置圆形图片
    public void setRound(){
        GenericDraweeHierarchy build = GenericDraweeHierarchyBuilder.newInstance(activity.getResources())
                .setRoundingParams(RoundingParams.asCircle())
                .build();
        simpleDraweeView.setHierarchy(build);
    }

    //设置 圆角
    public void setRounded(int Round){
        GenericDraweeHierarchy build1 = GenericDraweeHierarchyBuilder
                .newInstance(activity.getResources())
                .setRoundingParams(RoundingParams.fromCornersRadius(Round))
                .build();
        simpleDraweeView.setHierarchy(build1);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值