Drawees 不支持 wrap_content
属性html
强制性的宽高,你必须声明 android:layout_width
和 android:layout_height
。若是没有在XML中声明这两个属性,将没法正确加载图像。
android
Drawees 不支持 wrap_content
属性。spa
所下载的图像可能和占位图尺寸不一致,若是设置出错图或者重试图的话,这些图的尺寸也可能和所下载的图尺寸不一致。code
若是大小不一致,假设使用的是 wrap_content
,图像下载完以后,View将会从新layout,改变大小和位置。这将会致使界面跳跃。orm
只有但愿显示固定的宽高比时,可使用wrap_content
。xml
若是但愿图片以特定的宽高比例显示,例如 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);
若是你想要在一个长的图片列表中滑动,你应该使用 RecyclerView
,ListView
,或 GridView
。这三者都会在你滑动时不断重用子视图。Fresco 的 view 会接收系统事件,使它们能正确管理内存。继承
ScrollView
不会这样作。所以,Fresco view 不会被告知它们是否在屏幕上显示,并保持图片内存占用直到你的 Fragment 或 Activity 中止。你的 App 将会面临更大的 OOM 风险。事件
不要试图把Fresco返回的一些对象进行向下转化,这也许会带来一些对象操做上的便利,可是也许在后续的版本中,你会遇到一些由于向下转换特性丢失致使的难以处理的问题。
DraweeHierarchy.getTopLevelDrawable()
仅仅 应该在DraweeViews中用,除了定义View中,其余应用代码建议连碰都不要碰这个。
在自定义View中,也千万不要将返回值向下转换,也许下个版本,咱们会更改这个返回值类型。
永远不要把 DraweeHierarchy
经过 DraweeView.setHierarchy
设置给不一样的View。DraweeHierarchy 是由一系列 Drawable 组成的。在 Android 中, Drawable 不能被多个 View 共享。
缘由同上。固然可使用不一样的资源ID,Android 实际会建立不一样的 Drawable。
不要直接使用 SettableDraweeHierarchy
方法(reset
,setImage
,...)。它们应该仅由 controller 使用。
DraweeView
设置图片。目前 DraweeView
直接继承于 ImageView,所以它有 setImageBitmap
, setImageDrawable
等方法。
若是利用这些方法直接设置一张图片,内部的 DraweeHierarchy
就会丢失,也就没法取到image pipeline 的任何图像了。
在后续的版本中,DraweeView 会直接从 View 派生。任何属于 ImageView 可是不属于 View 的方法都会被移除。
内容来自:http://fresco-cn.org/docs/index.html#_