Fresco几处不太好的地方

  1. Drawees 不支持 wrap_content 属性html

    强制性的宽高,你必须声明 android:layout_width 和 android:layout_height。若是没有在XML中声明这两个属性,将没法正确加载图像。
    android

wrap_content

Drawees 不支持 wrap_content 属性。spa

所下载的图像可能和占位图尺寸不一致,若是设置出错图或者重试图的话,这些图的尺寸也可能和所下载的图尺寸不一致。code

若是大小不一致,假设使用的是 wrap_content,图像下载完以后,View将会从新layout,改变大小和位置。这将会致使界面跳跃。orm

固定宽高比

只有但愿显示固定的宽高比时,可使用wrap_contentxml

若是但愿图片以特定的宽高比例显示,例如 4:3,能够在XML中指定:htm

<com.facebook.drawee.view.SimpleDraweeView     android:id="@+id/my_image_view"     android:layout_width="20dp"     android:layout_height="wrap_content"     fresco:viewAspectRatio="1.33"     <!-- other attributes -->

也能够在代码中指定显示比例:对象

mSimpleDraweeView.setAspectRatio(1.33f);


不要使用 ScrollViews#

若是你想要在一个长的图片列表中滑动,你应该使用 RecyclerViewListView,或 GridView。这三者都会在你滑动时不断重用子视图。Fresco 的 view 会接收系统事件,使它们能正确管理内存。继承

ScrollView 不会这样作。所以,Fresco view 不会被告知它们是否在屏幕上显示,并保持图片内存占用直到你的 Fragment 或 Activity 中止。你的 App 将会面临更大的 OOM 风险。事件

不要向下转换

不要试图把Fresco返回的一些对象进行向下转化,这也许会带来一些对象操做上的便利,可是也许在后续的版本中,你会遇到一些由于向下转换特性丢失致使的难以处理的问题。

不要使用getTopLevelDrawable

DraweeHierarchy.getTopLevelDrawable() 仅仅 应该在DraweeViews中用,除了定义View中,其余应用代码建议连碰都不要碰这个。

在自定义View中,也千万不要将返回值向下转换,也许下个版本,咱们会更改这个返回值类型。

不要复用 DraweeHierarchies

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

不要在多个DraweeHierarchy中使用同一个Drawable

缘由同上。固然可使用不一样的资源ID,Android 实际会建立不一样的 Drawable。

不要直接控制 hierarchy

不要直接使用 SettableDraweeHierarchy 方法(resetsetImage,...)。它们应该仅由 controller 使用。

不要直接给 DraweeView 设置图片。

目前 DraweeView 直接继承于 ImageView,所以它有 setImageBitmapsetImageDrawable 等方法。

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

使用 DraweeView 时,请不要使用任何 ImageView 的属性

在后续的版本中,DraweeView 会直接从 View 派生。任何属于 ImageView 可是不属于 View 的方法都会被移除。



内容来自:http://fresco-cn.org/docs/index.html#_

相关文章
相关标签/搜索