Fresco使用

Fresco使用

1.简介

图片加载组件,可以加载网页上,手机存储,本地资源的图片,有二级缓存机制。在安卓4.x版本及以下,采用的是将图片存到手机一块特殊的内存区域,从而提高速度。

开源地址 https://github.com/facebook/fresco

2.基本使用

####(1)引进依赖

// 一般依赖:
compile ‘com.facebook.fresco:fresco:0.14.1’

可选依赖

// 如果需要支持gif,再添加:
compile ‘com.facebook.fresco:animated-gif:0.12.0’

如果想引进最新版本的依赖,可以如下图操作:

I.进入源码页面,点击Branch Master,出来的页面点击tag,就像这个图片一样,最上面的就是最新版本了;

II.或者去README.md文件,给出的一般是最新的版本;

III.再或者直接在版本号后面加一个+,直接下载最新版本,这样

implementation ‘com.facebook.fresco:fresco:1.10.0+’,但一般不用,因为某些最新版本的库可能和原有版本使用不一样,然后别人用的时候直接下最新版本的库就会出错。

[![1541473103553.png](https://i.loli.net/2018/11/06/5be1036f447a9.png)](https://i.loli.net/2018/11/06/5be1036f447a9.png)
(2)初始化

建议在App启动就初始化,所以建议写在Application#onCreate()中,`Application在整个程序的周期内,Activity只是一个页面的周期

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

可选高级初始化

配置网络层为OkHttp,以及配置存储路径为SD卡 https://blog.csdn.net/yw59792649/article/details/78921025

(3)创建布局

用 SimpleDraweeView来实现传统的ImageView的效果,SimpleDraweeView是ImageView的子类,不过我们要注意Fresco不支持wrap_content,而是要用match_parent或者手动指定宽高,如果想使用wrap_content需要配合viewAspectRatio属性来使用。

<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/my_image_view"
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
fresco:placeholderImage="@drawable/my_drawable"
fresco:placeholderImageScaleType=“fitXY”
fresco:viewAspectRatio=“1”
/>

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/simpleDraweeView"
    android:layout_width="100dp"
    android:layout_height="100dp" />

####(4)主代码配置

//创建将要下载的图片的URI
Uri imageUri=Uri.parse("http://b335.photo.store.qq.com/psb?/V10eyEEK3Xf6rE
/dn1GxGnLYID1lNQQVtkoFau0M20YE5Kagr5ueenkttQ!/b/dA2GscdMHwAA&bo=gAJVAwAAAAAFAPc!&rf=viewer_4");
//创建SimpleDraweeView对象
SimpleDraweeView simpleDraweeView = (SimpleDraweeView) findViewById(R.id.simpleDraweeView);
//开始下载
simpleDraweeView.setImageURI(imageUri);

//创建DraweeController
        DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setUri(imageUri)//重试之后要加载的图片URI地址
                .setTapToRetryEnabled(true)//设置点击重试是否开启
                .setOldController(simpleDraweeView.getController())//设置旧的Controller
                .build();//构建
        //设置DraweeController
        simpleDraweeView.setController(controller);

DraweeController就是设置一些图片加载过程中的一些操作。这样一个简单的Fresco显示图片就成功了

3.其他技能

变圆形再设置边框

在布局文件里的控件上方设置部分引进这个,也可以在用到的时候直接Alt+Enter键

xmlns:fresco="http://schemas.android.com/apk/res-auto"

可以设置这个属性

fresco:roundAsCircle="true"//是否切割为圆形
fresco:roundingBorderWidth="2dp"//边框宽度
fresco:roundingBorderColor="@color/colorAccent"//边框填充颜色

其他效果都可以用一些设置属性方式进行改变,参考

https://blog.csdn.net/xuyueqing1225/article/details/79842292

4.主流图片加载框架对比

Picasso,Glide,Fresco 对比分析

Picasso性能要低于另外两个,不支持Gif

Glide 操作简单,轻巧

Fresco 比较大,使用复杂,性能强大,对内存OOM处理比较好

根据业务需求在Glide和Fresco中选择,大项目选Fresco,参见:

https://juejin.im/entry/5928e9212f301e0057d6bb93

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值