美文网首页
Fresco-Facebook的图片加载框架的使用

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

作者: Eva_Gao | 来源:发表于2017-10-23 16:17 被阅读0次

    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来有效降低内存缓存的开销;

    相关文章

      网友评论

          本文标题:Fresco-Facebook的图片加载框架的使用

          本文链接:https://www.haomeiwen.com/subject/mgdnkxtx.html