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

相關文章
相關標籤/搜索