Android学习之图片加载库Fresco

平时开发中肯定会有种需求,就是图片加载时显示正在加载的图片,图片加载失败时显示加载失败的图片,需要重新加载时显示需要重新加载的图片。
以上功能使用Fresco,几行代码就可以搞定。
什么是Fresco?Fackbook出品的一个强大且易用的图片加载库。
先看下地址:https://github.com/facebook/fresco
这里写下最简单的使用:
第一步:配置,以下代码加入到app之下的build.gradle的dependencies {}中即可
compile 'com.facebook.fresco:fresco:0.9.0+'
第二步:添加网络权限,否则无法读取网络图片
<uses-permission android:name="android.permission.INTERNET" />
第三步:布局文件中使用,这里用最简单的SimpleDraweeView来举例,相信这里大家都能看到每个属性的意思
<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/simpledraweeview_activity_main"
    android:layout_width="100dp"
    android:layout_height="100dp"
    fresco:actualImageScaleType="focusCrop"
    fresco:backgroundImage="@android:color/holo_green_light"
    fresco:fadeDuration="2000"
    fresco:failureImage="@drawable/ic_failure"
    fresco:failureImageScaleType="centerInside"
    fresco:placeholderImage="@drawable/ic_placeholder"
    fresco:placeholderImageScaleType="fitCenter"
    fresco:progressBarAutoRotateInterval="2000"
    fresco:progressBarImage="@drawable/ic_progressbar"
    fresco:progressBarImageScaleType="centerInside"
    fresco:retryImage="@drawable/ic_retry"
    fresco:retryImageScaleType="centerInside"
    fresco:roundAsCircle="true"
    fresco:roundingBorderWidth="5dp"
    fresco:roundingBorderColor="@android:color/holo_orange_light" />

这里actualImageScaleType是实际图像的缩放类型,progressBarAutoRotateInterval是进度图自动旋转间隔时间(单位:毫秒ms),roundingBorderWidth是圆形或者圆角图边框的宽度

还有就是别忘记添加命名空间

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

第四步:初始化Fresco,需要写在setContentView()之前,如下

Fresco.initialize(this);
setContentView(R.layout.activity_main);

第五步:代码中使用,使用方式如下

Uri uri = Uri.parse("http://img4.duitang.com/uploads/item/201406/12/20140612085743_RvfYP.thumb.700_0.jpeg");//创建将要下载的图片的URI
SimpleDraweeView sdv = (SimpleDraweeView) findViewById(R.id.simpledraweeview_activity_main);//创建SimpleDraweeView
sdv.setImageURI(uri);//开始下载
如果要在加载失败时显示重新加载的图片,需要使用DraweeController,

DraweeController负责和image loader交互(默认是Fresco中 image pipeline),可以创建一个这个类的实例,来实现对所要显示的图片做更多的控制。

这里故意使用一个无效地址来演示。

        //有效地址
        Uri uri = Uri.parse("http://img4.duitang.com/uploads/item/201406/12/20140612085743_RvfYP.thumb.700_0.jpeg");//创建将要下载的图片的URI
        //无效地址
//        Uri uri = Uri.parse("http://img4.duitang.com/uploads/item/201406/12/20140612085743_RvfYP.thumb.700_0.error.jpeg");
        SimpleDraweeView sdv = (SimpleDraweeView) findViewById(R.id.simpledraweeview_activity_main);//创建SimpleDraweeView
        sdv.setImageURI(uri);//开始下载
        DraweeController draweeController = Fresco
                .newDraweeControllerBuilder()
                .setUri(uri)//加载的图片URI地址
                .setTapToRetryEnabled(true)//设置点击重试是否开启
                .setOldController(sdv.getController())//设置旧的Controller
                .build();//构建
        sdv.setController(draweeController);//设置DraweeController
最后是效果图,分别是加载失败、加载中、重新加载和加载成功的图片:


Demo地址:http://download.csdn.net/detail/qq_23940659/9491486
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值