Fresco-Facebook的图片加载框架的使用

2017-10-23  本文已影响0人  Eva_Gao

Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。还不需要另行引入第三方或者自定义控件实现图片的圆角显示.只需要设置几个属性值即可.下面便是该框架的使用:

1.引入fresco:


compile 'com.facebook.fresco:fresco:0.12.0'

其中0.12.0是fresco的版本;

如果有其他需要也可以引入其他的相关,详情请看官方文档:

该项目的中文网站是:http://www.fresco-cn.org/,在Github上面是:https://github.com/facebook/fresco

2初始化:


public class MyApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

Fresco.initialize(this);

}}

1.引入布局中


在布局文件中加上SimpleDraweeView,用来显示图片

<com.facebook.drawee.view.SimpleDraweeView

android:id="@+id/network_image_view"

android:layout_width="200dp"

android:layout_height="200dp"

android:layout_gravity="center_horizontal"/>

如果是圆角的话,可以在上面的基础上增加如下特殊配置,其中fresco:roundedCornerRadius根据需要具体设置值:

fresco:roundAsCircle="false"

fresco:roundBottomLeft="true"

fresco:roundBottomRight="true"

fresco:roundTopLeft="true"

fresco:roundTopRight="true"

fresco:roundedCornerRadius="10dp"

XML中会用到Fresco的自定义View。在最顶层的布局文件中加上命名空间,这样可以使用Fresco自定义的一些属性:

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

4.加载图片


String url=""http://7xsonf.com1.z0.glb.clouddn.com/o_1bqtv6i0us6qeaem5ojj57i7.png";

Uri uri = Uri.parse(url);

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

draweeView.setImageURI(uri);

剩下的,Fresco会替你完成:

显示占位图直到加载完成;

下载图片;

缓存图片;

图片不再显示时,从内存中移除;

等等等等。

注意:Fresco.initialize()方法,该方法有两种传参方式:


/** Initializes Fresco with the default config. */

publicstaticvoidinitialize(Context context)

/** Initializes Fresco with the specified config. */

publicstaticvoidinitialize(Context context, ImagePipelineConfig imagePipelineConfig)

其中不对ImagePipeline进行配置的话,Fresco将采用默认的配置.当然你也可以自己设置.

注意事项:

1.布局中如果使用了fresco的属性,则需要引入命名空间:

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

2.SimpleDraweeView不支持wrap_content属性,必须给出具体的宽高值,如果width或者height其中有一个值为wrap_content,则可以通过设置宽高比的方法setAspectRatio间接指定其值;

3.使用SimpleDraweeView后,facebook官方建议不要再使用ImageView的任何属性,如setImageResource、setBackground、setScaleType等;后续版本SimpleDraweeView旨在改为直接继承View;

4.永远不要把DraweeHierarchy通过DraweeView.setHierarchy设置给不同的View。DraweeHierarchy 是由一系列 Drawable 组成的。在 Android 中, Drawable 不能被多个 View 共享。

5:不要直接给DraweeView设置图片。

目前DraweeView直接继承于 ImageView,因此它有setImageBitmap,setImageDrawable等方法。

如果利用这些方法直接设置一张图片,内部的DraweeHierarchy就会丢失,也就无法取到image pipeline 的任何图像了。

6.加载特别特别大的图片时最容易导致这种情况。如果你加载的图片比承载的View明显大出太多,那你应该考虑将它Resize一下。给ImageRequest默认配置上setResizeOptions(resizeOptions)属性;对于照片墙等含有大量图片的页面,必须要对图片的大小做限制;网络图片可以通过服务端来对图片的尺寸、质量、图片类型做处理后再返给客户端,但是对于手机本地的图片,就只能通过setResizeOptions来有效降低内存缓存的开销;

上一篇下一篇

猜你喜欢

热点阅读