Fresco第三方框架加载图片教程介绍

3、Fresco网络加载图片框架使用步骤

(一)、

Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。它拥有三级缓存(网络缓存,内存,文件),其中的Drawees可以显示占位符,直到图片加载完成。

中文文档:http://www.fresco-cn.org/

//内存溢出泄露的区别,图片质量,三级缓存

(二)、

如果你想下载显示一张图片,并且在加载过程中用占位图来显示它,就可以用SimpleDraweeView

在布局中添加SimpleDraweeView控件

<com.facebook.drawee.view.SimpleDraweeView

   android:id="@+id/my_image_view"

    android:layout_width="130dp"

   android:layout_height="130dp"

   fresco:placeholderImage="@drawable/my_drawable"

  />

(三)Fresco支持许多URI格式

类型                            Scheme

远程图片                            http://, https://

本地文件                            file://

Contentprovider                content://

asset目录下的资源            asset://

res目录下的资源        res://

 

(四)注意!

必须设置layout_width和layout_height

如果没有在XML中声明这两个属性,将无法正确加载图像。

wrap_content

Drawees不支持 wrap_content 属性。

所下载的图像可能和占位图尺寸不一致,如果设置出错图或者重试图的话,这些图的尺寸也可能和所下载的图尺寸不一致。

如果大小不一致,图像下载完之后,假设如果是wrap_content,View将会重新layout,改变大小和位置。这将会导致界面跳跃。

•       固定宽高比

•       只有希望显示的固定宽高比时,可以使用wrap_content。

•       如果希望显示的图片保持一定宽高比例,如果 4:3,则在XML中:

•       <com.facebook.drawee.view.SimpleDraweeView

•           android:id="@+id/my_image_view"

•           android:layout_width="20dp"

•           android:layout_height="wrap_content"/>

•       然后在代码中指定显示比例:

•       mSimpleDraweeView.setAspectRatio(1.33f);

 

(五)fresco各种特性

•      1、进度条

构建hierarchy (层次)*

GenericDraweeHierarchyhierarchy=new GenericDraweeHierarchyBuilder(getResources()).setProgressBarImage(newProgressBarDrawable()).build();simpleDraweeView.setHierarchy(hierarchy);

这样,在 Drawee 的底部就会有一个深蓝色的矩形进度条

图片: http://www.yztcedu.com/images/logo.png

 

•      2、渐进式JPEG

Fresco支持渐进式的网络JPEG图。在开始加载之后,图会从模糊到清晰渐渐呈现。

 ImageRequest request=ImageRequestBuilder.newBuilderWithSource(Uri)

                        setProgressiveRenderingEnabled(true).build();

  PipelineDraweeControllercontroller=(PipelineDraweeController)Fresco.newDraweeControllerBuilder().setImageRequest(request).

setOldController(simpleDraweeView.getController()).build();simpleDraweeView.setController(controller);

图http://img5.imgtn.bdimg.com/it/u=1747776739,1699091026&fm=15&gp=0.jpg

 

•      3、占位图

Fresco支持渐进式的网络JPEG图。在开始加载之后,图会从模糊到清晰渐渐呈现。

 ImageRequest request=ImageRequestBuilder.newBuilderWithSource(Uri)

                       .setProgressiveRenderingEnabled(true).build();

  PipelineDraweeController controller=(PipelineDraweeController)Fresco.newDraweeControllerBuilder().setImageRequest(request).

                       setOldController(simpleDraweeView.getController()).build();

simpleDraweeView.setController(controller);

图http://img5.imgtn.bdimg.com/it/u=1747776739,1699091026&fm=15&gp=0.jpg

 

(六)Fresco其他重要属性介绍

•      fresco:fadeDuration="300"// 淡入淡出的持续时间

•      fresco:actualImageScaleType="focusCrop" // 实际图像的缩放类型

•      fresco:placeholderImage="@color/wait_color" //占位图

•      fresco:placeholderImageScaleType="fitCenter"//占位图的缩放类型

•      fresco:failureImage="@drawable/error"//下载失败显示的图片

•      fresco:failureImageScaleType="centerInside"//失败图的缩放类型

•      fresco:retryImage="@drawable/retrying"

•      //图片加载失败时显示,提示用户点击重新加载,重复加载4次还是没有加载出来的时候才会显示failureImage的图片

•      fresco:retryImageScaleType="centerCrop"//重新加载的图片缩放类型

•      fresco:progressBarImage="@drawable/progress_bar"//进度条图片

•      fresco:progressBarImageScaleType="centerInside"

•      fresco:progressBarAutoRotateInterval="1000"

•      //进度图自动旋转间隔时间(单位:毫秒ms)

•      fresco:backgroundImage="@color/blue"

•      //背景图片,这里的背景图片首先被绘制

•      fresco:overlayImage="@drawable/watermark"

•      // 设置叠加图,在xml中只能设置一张叠加图片,如果需要多张图片的话,需要在java代码中设置哦

•      fresco:pressedStateOverlayImage="@color/red"

•      // 设置点击状态下的叠加图

•      fresco:roundAsCircle="false"//设置为圆形图

•      fresco:roundedCornerRadius="1dp"// 圆角半径

•      fresco:roundTopLeft="true"// 左上角是否为圆角

•      fresco:roundTopRight="false"

•      fresco:roundBottomLeft="false"

•      fresco:roundBottomRight="true"

•      fresco:roundWithOverlayColor="@color/corner_color"

•      fresco:roundingBorderWidth="2dp"//边框的宽度

•      fresco:roundingBorderColor="@color/border_color"//边框颜色



•      <com.facebook.drawee.view.SimpleDraweeView
   
android:id="@+id/img_simDv_fenlei"
    android:layout_width="80dp"
    android:layout_height="80dp"
    app:placeholderImage="@drawable/img_fenlei"
    app:roundAsCircle="true"//设置成圆角图片
   
/>

•      代码中

•      Stringuri=list.get(position).getThumb();

•      //下载图片
viewHolder.imgSimDvFenlei.setImageURI(Uri.parse(uri));



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值