Android图片缓存框架 - Fresco的GenericDraweeHierarchy (五)

目录

1.Fresco 简介

2. Fresco 文档

3. Fresco开发步骤

4. Fresco加载图片6种方式

5. Drawees xm属性设置

6 Fresco实现圆角或圆形图片

7. DraweeHierarchy设置

7.1 DraweeHierarchy简介

7.2 设置占位图

7.3 设置加载失败图片

7.4 设置淡入淡出

7.5 设置图片缩放类型

7.6 重试图片

7.7 设置进度条

8. Fresco的DraweeController

9. ControllerListener 图片加载监听

10. Fresco的ImageRequest

11 Fresco的显示GIF

12 Fresco的BasePostprocessor图片处理

13.Fresco设置和清除缓存


7. DraweeHierarchy设置

7.1 DraweeHierarchy简介

       创建 DraweeHierarchy 对象较为耗时的一个过程,一个DraweeHierarchy不可以被多个View公用,

但是可以被同一个应该多次利用,但是不要多次调用setHierarchy(),即使View可以回收;

7.2 设置占位图

方式一:

GenericDraweeHierarchy hierarchy = draweeView.getHierarchy();
hierarchy.setPlaceholderImage(R.mipmap.android);
draweeView.setHierarchy(hierarchy);

方式二:

draweeView.getHierarchy().setPlaceholderImage(R.mipmap.android);

7.3 设置加载失败图片

方式一:

GenericDraweeHierarchy hierarchy = draweeView.getHierarchy();
hierarchy.setFailureImage(R.mipmap.img_error);
draweeView.setHierarchy(hierarchy);

方式二:

draweeView.getHierarchy().setFailureImage(R.mipmap.img_error);

7.4 设置淡入淡出

方式一:

GenericDraweeHierarchy hierarchy = draweeView.getHierarchy();
hierarchy.setFailureImage(R.mipmap.img_error);
draweeView.setHierarchy(hierarchy);

方式二:

draweeView.getHierarchy().setFadeDuration(3000);

7.5 设置图片缩放类型

可缩放类型:

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

代码实现: 

GenericDraweeHierarchy hierarchy = draweeView.getHierarchy();
hierarchy.setActualImageScaleType(ScalingUtils.ScaleType.CENTER);
draweeView.setHierarchy(hierarchy);

7.6 重试图片

setRetryImage() 设置重试图片,图片现在失败后重试加载图片;

  hierarchy.setRetryImage(R.mipmap.img5);
  DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setUri(imgUrlError)
                .setTapToRetryEnabled(true)
                .build();
  draweeView.setController(controller);

 

7.7 设置进度条

ProgressBarDrawable progressBarDrawable = new ProgressBarDrawable();
progressBarDrawable.setRadius(10);
progressBarDrawable.setColor(Color.RED);

hierarchy.setProgressBarImage(progressBarDrawable);
draweeView.setImageURI(imgUrl1);

或者使用:

AutoRotateDrawable autoRotateDrawable = new AutoRotateDrawable(getResources()
                                 .getDrawable(R.mipmap.loading, null), 3000);

hierarchy.setProgressBarImage(autoRotateDrawable);
draweeView.setImageURI(imgUrl1);

 

你可能感兴趣的:(Android图片缓存框架,Fresco,Android开发)