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#_