fresco简单使用

本文介绍了Android开发中Fresco库的使用,包括环境搭建、基本使用、图片裁剪、加载进度、圆形及圆角图片、渐进式展示、GIF动画、多图请求、图片复用、加载监听、内存占用调整和图片修改等多个方面,提供了详细的代码示例。
摘要由CSDN通过智能技术生成

1.Fresco的环境搭建

(1)在项目的build.grade文件里添加依赖(注意:因为Fresco进行了包的拆分,用到哪个功能就添加对应的依赖,可以减少APP的体积)

dependencies {
  //Fresco,无论使用哪个模块的功能,都必须要添加的基础依赖
 compile 'com.facebook.fresco:fresco:0.14.1'

  //下面的依赖根据需求,用到哪个模块,就导入对应的依赖即可.

  // 仅支持 WebP 静态图,需要添加

  compile 'com.facebook.fresco:webpsupport:0.14.1'

  // 支持 GIF 动图,需要添加

  compile 'com.facebook.fresco:animated-gif:0.14.1'

  // 支持 WebP 静态图及 WebP 动图,需要添加

  compile 'com.facebook.fresco:animated-webp:0.14.1'

  compile 'com.facebook.fresco:webpsupport:0.14.1'

 

  // 在 API < 14 上的机器支持 WebP 时,需要添加

  compile 'com.facebook.fresco:animated-base-support:0.14.1'

}  

 

(2)在application中初始化Fresco(记得在清单文件里配置application)

   Fresco.initialize(this);

 

(3)配置网络权限 

   <uses-permission android:name="android.permission.INTERNET"/> 

 

(4)在xml布局文件中,加入命名空间

<!-- 其他元素-->

<LinearLayout

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

 

(5)在xml中引入SimpleDraweeView控件(fresco:placeholderImage="@drawable/my_drawable":默认占位图片)

<com.facebook.drawee.view.SimpleDraweeView

    android:id="@+id/my_image_view"

    android:layout_width="130dp"

    android:layout_height="130dp"

    fresco:placeholderImage="@drawable/my_drawable"

  />

 

2.Fresco的基本使用

(1)在Java代码中开始加载图片

   //加载网络图片的网址

Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/logo.png");

//初始化控件

SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);

//加载图片

draweeView.setImageURI(uri);

 

注意:如果项目中使用了OkHttp需要进行替换(因为Fresco底层网络用的是okhttp,不做修改会出现jar包冲突)

OkHttp2版本:compile "com.facebook.fresco:imagepipeline-okhttp:0.12.0+"

OkHttp3版本::compile "com.facebook.fresco:imagepipeline-okhttp3:0.12.0+" 

 

 

3.根据URI的地址,带进度条加载一个网络图片

//所要加载图片的网址
Uri uri = Uri.parse("http://assets.kgc.cn/upload/openteacher/20160831/1472636067718985.jpg");
//创建Builder对象,一般创建出参数对象
GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(getResources());
//创建参数对象,设置其样式为进度条
GenericDraweeHierarchy hierarchy = builder.setProgressBarImage(new ProgressBarDrawable()).build();
//将参数对象设置给图片控件
sdv_fresco_spimg.setHierarchy(hierarchy);
//控件加载图片,参数:网络图片的网址.
sdv_fresco_spimg.setImageURI(uri);

 

 

4.对图片进行不同的裁剪

创建出成员变量的GenericDraweeHierarchyBuilder

builder new GenericDraweeHierarchyBuilder(getResources());

 

//根据点击事件,对图片执行不同的裁剪

@Override

public void onClick(View v){

switch (v.getId()) {

 

// 居中,无缩放

case R.id.bt_fresco_center:

// 设置描述

tv_fresco_explain.setText("居中,无缩放");

// 样式设置,使图片只显示中间的部分

GenericDraweeHierarchy CENTER= builder.setActualImageScaleType(ScalingUtils.ScaleType.CENTER).build();

// 显示图片

imageDisplay(CENTER);

break;

 

// 保持宽高比缩小或放大,使得两边都大于或等于显示边界(也就是裁剪成正方形)。以中间的点为图片中心

case R.id.bt_fresco_centercrop:

// 设置描述

tv_fresco_explain.setText("保持宽高比缩小或放大,使得两边都大于或等于显示边界。居中显示");

// 样式设置,使图片按比例缩小或放大,且裁剪成正方形.

GenericDraweeHierarchy CENTER_CROP =builder.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_CROP).build();

// 图片显示

imageDisplay(CENTER_CROP);

break;

 

// 同centerCrop, 但居中点不是中点,而是指定的某个点,这里设置为图片的左上角那点

case R.id.bt_fresco_focuscrop:

// 设置描述

tv_fresco_explain.setText("同centerCrop, 但居中点不是中点,而是指定的某个点,这里我设置为图片的左上角那点");

//指定中心点位置

PointF point = new PointF(0,0);

//根据指定的点设置为图片中心,使图片按比例缩小或放大,且裁剪成正方形.

GenericDraweeHierarchy FOCUS_CROP= builder.setActualImageScaleType(ScalingUtils.ScaleType.FOCUS_CROP)

.setActualImageFocusPoint(point).build();

// 图片显示

imageDisplay(FOCUS_CROP);

break;

 

//使两边都在显示边界内,居中显示。如果图尺寸大于显示边界,则保持长宽比缩小图片

case R.id.bt_fresco_centerinside:

// 设置描述

tv_fresco_explain.setText("使两边都在显示边界内,居中显示。如果图尺寸大于显示边界,则保持长宽比缩小图片");

// 样式设置,使图片按比例显示在控件内,

GenericDraweeHierarchy CENTER_INSIDE=builder.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_INSIDE).build();

// 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值