Fresco用法总结基础篇

Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。相对于ImageLoader,拥有更快的图片下载速度以及可以加载和显示gif图等诸多优势,是个很好的图片框架。PS:毕竟是facebook开源的,我说差也不会有人相信,还是夸夸吧!

github地址:https://github.com/facebook/fresco

首先体验其最基本的用法:

1.导入 Android Studio 或者 Gradle

dependencies {
  compile 'com.facebook.fresco:fresco:0.9.0+'
}

2、在xml中引入SimpleDraweeView
注意:1、在SimpleDraweeView的父控件或者根节点中配置 xmlns:fresco="http://schemas.android.com/apk/res-auto";

2、配置网络权限

3、在Java代码中开始加载图片
Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/fresco-logo.png");
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI(uri);

OK,到这儿已经初步学会了该框架的使用。

接下来详细研究其用法:


URIs的使用:

类型 Scheme 示例
远程图片 http://, https:// HttpURLConnection 或者参考 使用其他网络加载方案
本地文件 file:// FileInputStream
Content provider content:// ContentResolver
asset目录下的资源 asset:// AssetManager
res目录下的资源 res:// Resources.openRawResource

res 示例:Uri uri = Uri.parse("res://包名(实际可以是任何字符串甚至留空)/" + R.drawable.ic_launcher);

注意:Fresco 不支持 相对路径的URI. 所有的URI都必须是绝对路径,并且带上该URI的scheme。


在XML中使用SimpleDraweeView:

给出一个完整的示例:

 
  
说明:必须声明 android:layout_width 和 android:layout_height,否则将无法正确加载图像,另外不支持 wrap_content 属性,但也有例外的时候,如果想固定控件的宽高比,则可以使用wrap_content,并通过在xml代码中设置 fresco:viewAspectRatio="小数"或者在Java代码中设置 mSimpleDraweeView.setAspectRatio(1.33f);即可。

在Java中自定义显示图

一般情况下,在XML设置显示效果即可, 如果想更多定制化,可以这样:

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

List backgroundsList;
List overlaysList;
GenericDraweeHierarchyBuilder builder =
    new GenericDraweeHierarchyBuilder(getResources());
GenericDraweeHierarchy hierarchy = builder
    .setFadeDuration(300)
    .setPlaceholderImage(new MyCustomDrawable())
    .setBackgrounds(backgroundList)
    .setOverlays(overlaysList)
    .build();
mSimpleDraweeView.setHierarchy(hierarchy);
注意:请不要多次调用setHierarchy,即使这个View是可回收的。创建 DraweeHierarchy 的较为耗时的一个过程,应该多次利用。

修改 DraweeHierarchy

DraweeHierarchy 的一些属性可以在运行时改变。

要改变这些属性,首先获取一个引用:

GenericDraweeHierarchy hierarchy = mSimpleDraweeView.getHierarchy();

修改占位图

修改占位图为资源id:hierarchy.setPlaceholderImage(R.drawable.placeholderId);

或者修改为一个 Drawable:Drawable drawable; hierarchy.setPlaceholderImage(drawable);


改变图像的显示

修改缩放类型:

hierarchy.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_INSIDE);

如果你选择缩放类型为 focusCrop,需要指定一个居中点:hierarchy.setActualImageFocusPoint(point);


你可以为图像添加一个 color filter:

ColorFilter filter;

// 创建filter

hierarchy.setActualImageColorFilter(filter);


圆角

除了圆角显示方式(原来为圆角的不能修改为圆圈,反之亦然),其他圆角相关的呈现参数, 具体参见这里 是可以动态修改的。

如下: 获取DraweeHierarchy的圆角显示参数,修改圆角半径为10。

RoundingParams roundingParams = hierarchy.getRoundingParams();

roundingParams.setCornersRadius(10);

hierarchy.setRoundingParams(roundingParams);


OK,到此就已经掌握了Fresco的基础用法,接一下的一篇会研究Fresco的一些高阶功能及技巧。





你可能感兴趣的:(第三方框架)