Fresco是一个出自Facebook的功能强大的图片加载库。 本文就来介绍一下它的使用 (1)引入包 implementation 'com.facebook.fresco:fresco:2.1.0' 最新的是 2.4.0,之所以没用是因为android " fresco:placeholderImageScaleType="fitCenter" fresco:failureImage="@drawable/error" fresco:failureImageScaleType fresco:progressBarAutoRotateInterval="1000" fresco:backgroundImage="@color/blue" fresco:overlayImage fresco:roundedCornerRadius="1dp" fresco:roundTopLeft="true" fresco:roundTopRight="false" fresco
Glide、Picasso和Fresco都是目前Android图片加载的主流框架。 Glide与Picasso使用方式及其相似,都是链式一行代码即可搞定。 传送门:http://square.github.io/ Glide是谷歌出的,作者是bumptech 三、Fresco compile 'com.facebook.fresco:fresco:0.12.0 动图),需要添加 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使用起来比Glide github:https://github.com/liaohuqiu/fresco-docs-cn 官方文档:https://www.fresco-cn.org/docs/index.html 使用详解
// To get image using Fresco ImageRequest imageRequest = ImageRequestBuilder .newBuilderWithSource Uri.parse(ImgUrl)) .setProgressiveRenderingEnabled(true) .build(); ImagePipeline imagePipeline = Fresco.getImagePipeline
在本教程中,您将学习如何使用fresco android图像库。 Fresco是由Facebook开发人员创建的图像库,可用于显示来自互联网或本地存储的图像。 ---- Fresco Android教程 使用包名com.frescoandroid创建一个android studio项目 。 implementation 'com.facebook.fresco:fresco:1.13.0' 注意: 如果要显示gif或WebP,则需要包含更多依赖项。 在我们的项目中使用 Fresco 之前,我们必须初始化它,这个类用于初始化目的。通过这种方式,我们必须初始化它一次,然后我们可以在整个项目中使用库。 还可以通过添加xmlns来提及顶级元素中的自定义命名空间 :fresco =“http://schemas.android.com/apk/res-auto” 属性。
Picasso,Glide,Fresco的前世今生 基本项对比 对比项 Picasso Glide Fresco 地址 https://github.com/square/picasso https:/ 可以看出Fresco的java heap基本保持较低平稳状态,而Glide的java heap基本为Fresco的一倍,所以OOM的风险也比fresco大一倍。 glide:XXX.XXX' compile 'com.facebook.fresco:fresco:XXX.XXX 初始化 直接使用 Fresco.initialize(this); layout 普通 Fresco 要使用完整的Fresco功能就要导入如下的依赖 ? 缺点 Glide -没有文件缓存 -java heap比Fresco高 Fresco 包较大(2~3M) 用法复杂 底层涉及c++领域,阅读源码深入学习难度大 结论 Fresco虽然很强大
两年前部落项目接入Fresco的时候,那时候主流机型还是4.X。Fresco在4.X的机器的内存性能很好,Bitmap存在Ashmem(匿名共享内存)层里面的,对应用的内存缓存的压力不大。 Fresco需要自己进行这块内存的管理。 所幸的是,Fresco的引用计数方式已经很完善,并且当SimpleDraweeView onDetachWindow的时候也会做释放操作,在这种情况下内存交给Fresco还是挺令人放心的。 5.X以上系统的Fresco 然而purgeable bitmap引起主线程卡顿的这一缺陷最终使得谷歌在5.0以上的系统废弃了它,所以Fresco在5.0以上系统再也没法使用Ashmem层了,Bitmap 随着主流操作系统逐渐趋向于5.0,6.0,Fresco导致的OOM问题也趋于严重。
转载请注明出处 Fresco源代码文档翻译项目请看这里:Fresco源代码文档翻译项目 硬盘缓存是android图片框架中比较重要的一个模块,Fresco中自己重写了一个硬盘缓存框架,代替了android 本身的DiskLruCache,所以今天我们就来介绍Fresco中的硬盘缓存,并且将其提取出来成为我们自己的框架。 三、Fresco硬盘缓存框架的使用 Fresco在使用硬盘缓存框架的时候,与其他模块通信的时候使用了两个类DiskCacheConfig和DiskStorageCache。 以上就是Fresco硬盘缓存框架的使用。 四、总结 Fresco的硬盘缓存框架,还是挺有趣的,其中用到了许多软件工程的思想与Java设计模式。 Fresco中还有许多模块非常有趣,做个预告下一篇博客将会分析Fresco的内存缓存框架有兴趣的同学一定别错过了。
剧透一下(主要推荐Fresco),剧透一下(主要推荐Fresco),剧透一下(主要推荐Fresco)~~~请看到最后好不。 聪明的你一定知道了,因为我要说Fresco,那么为什么不用Glide了呢? 前方安利入教,Fresco大法好( ﹁ ﹁ ) ~→
4、Fresco 这是一个让人又爱又恨的图片加载,他自带缓存,支持GIF,WebP,缩略图···对图片的缓存管理对5.0以下支持更是妥妥的 我切换到Fresco也是下了很大的决心,因为替换ImageView是一件很痛苦的事情,特别是Fresco不支持warp_content,不过强大的功能确实很吸引,才不是因为不能解决的bug和需求呢。 fresco-processors 3、PhotoDraweeView 功能与丁丁大名的PhotoView一样,支持双击放大,单击返回,手动放大与缩小等,无缝接入Fresco,哎哟喂,不错哟。,中文文档,很方便查阅 看下官方的描述: Fresco 是一个强大的图片加载组件。 Fresco 中设计有一个叫做 Drawees 模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。 Fresco 支持 Android2.3(API level 9) 及其以上系统。 gif格式的图片了 1、必须要做的事,当然看官方文档也能知道,如何引入Fresco到项目中 Android Studio 或者 Gradle dependencies { compile 'com.facebook.fresco :fresco:0.6.0+' } IDEA 和 Eclipse 就是别的方法了,具体看下 http://www.fresco-cn.org/docs/index.html#_ 2、配置清单文件添加网络权限
Fresco是一个比较大的开源项目,类的总数超过450个。经过一个来月的翻译,终于将绝大部分Fresco的源码翻译完毕了,也写了几篇Fresco各个模块的分析博客。 Fresco的源代码是一个巨大的宝库,让我能够一窥Android高级开发者开发一个项目的方式与思路。之后如果有时间我还会带来更多的Android开源项目的源代码翻译。 这个图是我将所有模块整合之后的类图,图片比较大需要下载到本地,大家如果有兴趣可以结合之前的几篇博客和Fresco的翻译项目观看。 简书上传的图片会被压缩所以附上原图地址:Fresco完全项目类图 ? Fresco完全项目类图 Fresco源代码翻译项目 从零开始撸一个Fresco之硬盘缓存 从零开始撸一个Fresco之内存缓存 从零开始撸一个Fresco之gif和Webp动画
概述 Fresco 是 facebook 的开源类库,它支持更有效的加载网络图片以及资源图片。它自带三级缓存功能,让图片显示更高效。 介绍 Fresco 是一个强大的图片加载组件。 Fresco 支持 Android2.3(API level 9) 及其以上系统。 简单使用 简单来说,只需要三步。 1. 添加依赖 2. 初始化Fresco 3. 指定Uri 1.添加依赖 在你的 模块级别 的gradle中写下: compile 'com.facebook.fresco:fresco:0.10.0' 2.初始化Fresco 在你的自定义application :roundedCornerRadius="30dp" fresco:roundTopLeft="true" fresco:roundTopRight="false" fresco Fresco 支持许多URI格式。
上一篇文章的链接:从零开始撸一个Fresco之硬盘缓存 转载请注明出处 Fresco源代码文档翻译项目请看这里:Fresco源代码翻译项目 这个项目会不断更新想学习Fresco源代码的同学一定不要错过 Fresco中有个很重要的功能就是gif和Webp动画的实现,今天我就来讲解一下这个模块,顺便撸了个模块demo出来。 这是项目的github地址Fresco动画模块,推荐看博客的时候结合项目一起看,项目中绝大部分类都有细致的注释,看起来还是很清晰的。 在Fresco中由于要频繁地对Bitmap进行操作,所以对Bitmap我们可以使用对象池,此外还有byte数组等。 2.总结:在Fresco中一般的静态图片的数据使用的是BitmapPool,这里使用的是java堆上的内存。
主流的图片加载库-介绍 从Github上的Star数排序来看,现在主流的Android图片加载库有 Universal-Image-Loader Picasso Fresco Glide 下面是简单的介绍 各个主流图片加载库的Github地址 UniversalImageLoader Picasso Glide Fresco 4. 总结 本文对Android的主流图片加载库进行了全面的介绍 & 对比。 Carson带你学Android开源库系列文章: Carson带你学Android:主流开源图片加载库对比(UIL、Picasso、Glide、Fresco) Carson带你学Android:主流开源网络请求库对比
前言 Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片比较。 在这里介绍一下Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide的一些使用以及最基本的用法介绍。 其他:Fresco 中设计有一个叫做 image pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。 Fresco 中设计有一个叫做 Drawees 模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。 Fresco 在低端机器上表现一样出色,你再也不用因图片内存占用而思前想后。此外,Android 本身的图片库不支持此格式,但是Fresco支持。
:fresco:0.14.0 | +--- com.facebook.fresco:drawee:0.14.0 | | \--- com.facebook.fresco:fbcore: 0.14.0 | +--- com.facebook.fresco:fbcore:0.14.0 | \--- com.facebook.fresco:imagepipeline:0.14.0 :fbcore:0.14.0 默认情况下 , 在 build.gradle 中配置 com.facebook.fresco:fresco:0.14.0 依赖 , dependencies { implementation 'com.facebook.fresco:fresco:0.14.0' } 会自动将其子依赖库 com.facebook.fresco:drawee:0.14.0 , com.facebook.fresco , 如在其它位置已经有了该依赖 , 则可以进行如下设置 : dependencies { implementation 'com.facebook.fresco:fresco:0.14.0', {
.transform(transformation) .transform(new CropCircleTransformation()) .into(holder.image); Fresco Fresco:https://github.com/facebook/fresco 使用文档:https://www.fresco-cn.org/docs/index.html 扩展:Fresco Processors https://github.com/wasabeef/fresco-processors 第一步:引入支持 dependencies { implementation 'com.facebook.fresco :fresco:1.8.1' } 第二步:使用SimpleDraweeView代替ImageView <? (this); } } 加载图片 Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static
最近封装了个 Fresco 的组件库:DFresco,就顺便来讲讲。 背景 Fresco 图片库很强大,我们项目中就是使用的 Fresco,但有一点就是,不怎么好使用,略麻烦。 不同项目中,多多少少都需要对 Fresco 进行一层封装才能在 ui 里快速使用。 fresco:failureImageScaleType="centerCrop" fresco:placeholderImage="@mipmap/ic_launcher" fresco:progressBarImage="@drawable/ani_rotate" fresco:progressBarImageScaleType="centerCrop" fresco:pressedStateOverlayImage="@mipmap/ic_launcher" fresco:roundAsCircle="false" fresco
在上例中,我们假设在中国使用glide,在美国使用fresco。 但实际起来,却不能只是这样。由于glide和fresco接口并不相同。 compileOnly 'com.github.bumptech.glide:glide:4.8.0' compileOnly 'com.facebook.fresco:fresco:1.11.0 ... } 我们终究还是implementation了图片,我们依然可以在项目中,使用Glide或Fresco。 如果开发同学使用Glide或Fresco,项目就又与实现耦合了,这样我们就功亏一篑了。 ... } 这样,我们在项目中,将无法直接使用Glide或Fresco,因为我们没有对它们进行编译。
com.squareup.okhttp:okhttp-ws:2.5.0 | \--- com.squareup.okhttp:okhttp:2.5.0 (*) +--- com.facebook.fresco :fresco:0.8.1 | +--- com.facebook.fresco:imagepipeline:0.8.1 | | +--- com.nineoldandroids :library:2.4.0 | | +--- com.facebook.fresco:fbcore:0.8.1 | | +--- com.android.support :fbcore:0.8.1 | \--- com.facebook.fresco:drawee:0.8.1 | +--- com.facebook.fresco :imagepipeline:0.8.1 (*) | \--- com.facebook.fresco:fbcore:0.8.1 +--- com.squareup.okio:
使用 Glide 加载图片 像普通jpg png图片那样加载图片即可,请参见 Glide 官方文档 Glide.with(context).load(url).into(imageView); 使用Fresco 安装 Fresco 和 AVIF SDK implementation 'com.qcloud.cos:avif:1.1.0' implementation 'com.facebook.fresco :fresco:version' // 如果需要支持 avif 动图解码器 则需要加上 fresco:animated-base 依赖 implementation 'com.facebook.fresco Fresco.initialize(context, config); 3. 使用 Fresco 加载图片 像普通jpg png图片那样加载图片即可,请参见 Fresco 官方文档。