Fresco用法大全

原创 2018年04月16日 11:31:58

公司换Fresco框架,叫我负责去调研和封装,查了Fresco的官方中文文档总结如下,

1,整体框架图



DraweeView

Xml中不支持wrap_content属性,但是使用viewAspectRatio

固定宽高比可以使用wrap_content

使用:

mSimpleDraweeView.setImageURI(uri);


代码中设置

创建一个 builder 然后设置给 DraweeView:

GenericDraweeHierarchyBuilder builder =

new GenericDraweeHierarchyBuilder(getResources());

 

GenericDraweeHierarchy hierarchy = builder

    .setFadeDuration(300)

    .setPlaceholderImage(new MyCustomDrawable())

    .setBackgrounds(backgroundList)

    .setOverlays(overlaysList)

.build();

mSimpleDraweeView.setHierarchy(hierarchy);

注意点:

1,创建 DraweeHierarchy 耗时,同一个View不要多次调用setHierarchy一个DraweeHierarchy 不可以被多个 View 共用

2,可以运行时修改 DraweeHierarchy的属性(比如占位图,失败图之类的)

3,进度条hierarchy .setProgressBarImage(new ProgressBarDrawable()),

4,圆角显示方式hierarchy.setRoundingParams(roundingParams);

 

ControllerBuilder对加载图片更多控制

DraweeController controller = Fresco.newDraweeControllerBuilder()

    .setUri(uri)

    .setTapToRetryEnabled(true)//点击重新加载

    .setOldController(mSimpleDraweeView.getController())

    .setControllerListener(listener)

    .build();

mSimpleDraweeView.setController(controller);

注意:指定一个新的controller的时候,使用setOldController,这可节省不必要的内存分配

controller.setControllerListener(listener):监听图片下载事件,可处理加载完和加载中加载失败的逻辑,这里无法修改图片修改图片可以在后处理器Postprocessor

 

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)

    .setPostprocessor(myPostprocessor)

.build();

Postprocessor :重写process方法,可以对bitmap做出操作

不要重写多于 1 个的 process 方法。这么做可能造成无法预测的结果。

 

controller.setImageRequest(request);

process(Bitmap bitmap) ,

1,图片在进入后处理器(postprocessor)的图片是原图的一个完整拷贝,原来图片不受修改的影响。

2,后处理器现在不支持 动图加载 

3,在开始一个图片显示时,即使是反复显示同一个图片,在每次进行显示时,都需要指定后处理器。对于同一个图片,每次显示可以使用不同的后处理器

 

process(Bitmap destBitmap, Bitmap sourceBitmap)

1,源图片和目标图片具有相同的大小。

2,不要修改源图片。在未来的版本中这会抛出一个异常。

3,不要保存对任何一个图片的引用。它们的内存会由 image pipeline 进行管理,目标图片会在 Drawee  DataSource 中正常地销毁。

 

process(Bitmap sourceBitmap,PlatformBitmapFactory bitmapFactory)

1,如果处理后的图片大小需要和原图片不同可以使用这个

2,不要使用 Android 中 Bitmap.createBitmap() 方法,它会在 Java 堆内存中产生一个 bitmap 对象。

 

渐进式加载

request.setProgressiveRenderingEnabled(true)

 

动画支持: 支持GIF 和 WebP

controller.setAutoPlayAnimations(true)//图片下载完自动播放,view移除,停止播放

1更多情况可设置下载监听灵活运用

controller .setControllerListener(controllerListener)

1,动画现在还不支持 postprocessors

 

先后分别显示两个分辨率的图(先显示低分辨率的图后高分辨率的图)

.setLowResImageRequest(ImageRequest.fromUri(lowResUri))

.setImageRequest(ImageRequest.fromUri(highResUri))

注意:动图无法在低分辨率那一层显示。

 

加载最先可用的图片

Uri uri1, uri2;

ImageRequest request = ImageRequest.fromUri(uri1);

ImageRequest request2 = ImageRequest.fromUri(uri2);

ImageRequest[] requests = { request1, request2 };

controller.setFirstAvailableImageRequests(requests)

按顺序去加载,第一个加载到的显示

 

缩放和旋转图片

Scaling 是一种画布操作,通常是由硬件加速的。图片实际大小保持不变,它只不过在绘制时被放大或缩小。

Resizing 是一种软件执行的管道操作。它返回一张新的,尺寸不同的图片。

Downsampling 同样是软件实现的管道操作。它不是创建一张新的图片,而是在解码时改变图片的大小。

 

ImageRequestBuilder配置更多的request设置

ImageRequest request = ImageRequestBuilder

    .newBuilderWithSource(uri)

    .setImageDecodeOptions(decodeOptions)

    .setAutoRotateEnabled(true)

    .setLocalThumbnailPreviewsEnabled(true)

    .setLowestPermittedRequestLevel(RequestLevel.FULL_FETCH)

    .setProgressiveRenderingEnabled(false)

    .setResizeOptions(new ResizeOptions(width, height))

.build();

· uri - 唯一的必选的成员. 参考 支持的URIs

· autoRotateEnabled - 是否支持自动旋转.

· progressiveEnabled - 是否支持渐进式加载.

· postprocessor - 后处理器(postprocess).

· resizeOptions - 图片缩放选项,用前请先阅读缩放和旋转.



Android Fresco属性大全,中文说明

/** * FrescoDraweeView在xml中设置的属性说明: * android:id="@+id/my_image_view" 【属性说明】id * andr...
  • YaphetZhao
  • YaphetZhao
  • 2016-03-01 15:33:17
  • 2169

Fresco用法总结基础篇

Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。相对于ImageLoader,拥有更快的图片下载速度以及可以加载和显...
  • wl1769127285
  • wl1769127285
  • 2016-04-07 15:12:44
  • 15332

Fresco最最最简单使用

参考资料:http://fresco-cn.org/docs/getting-started.html#_    http://www.wfuyu.com/technology/23636.html...
  • wa991830558
  • wa991830558
  • 2015-05-26 10:46:42
  • 67350

WrapContentDraweeView

  • 2016年09月27日 16:19
  • 2KB
  • 下载

android继续探索Fresco

我们接着上文继续说,上篇博客中我们已经知道了Fresco怎么用,也知道了它的很多属性,但是很多时候xml文件是不能满足你的要求的,这就需要你在代码中动态的改变显示的内容,今天我们就来探索一下如何在代码...
  • ElinaVampire
  • ElinaVampire
  • 2015-08-05 09:44:00
  • 4413

Fresco 图片加载帮助类

Fresco在项目中使用的越来越多,记录下最近写的个帮助类
  • yang786654260
  • yang786654260
  • 2016-01-06 16:42:59
  • 1591

Gridview用法大全

  • 2011年10月27日 20:46
  • 167KB
  • 下载

Android强大的图片加载框架Fresco简单用法

Android关于加载图片的框架有Universal-Image-Loader、Picasso、Volley、Fresco,这篇文章主要简单的分析一下Fresco的用法,Fresco是Facebook...
  • vatty748895431
  • vatty748895431
  • 2016-03-14 11:55:17
  • 3183

Android图片加载神器之Fresco,基于各种使用场景的讲解

转载请标明出处:http://blog.csdn.net/android_ls/article/details/53137867Fresco是Facebook开源Android平台上一个强大的图片加载...
  • android_ls
  • android_ls
  • 2016-11-12 18:13:06
  • 20285

GridView用法大全

  • 2010年01月30日 15:00
  • 95KB
  • 下载
收藏助手
不良信息举报
您举报文章:Fresco用法大全
举报原因:
原因补充:

(最多只允许输入30个字)