2015-11-11 66 views
3

我有一個應用程序使用壁畫庫加載圖像。我有兩個問題。 1.如果我使用的壁畫圖像這樣壁畫帶有寬度和高度的圖像 - match_parent不顯示

<com.facebook.drawee.view.SimpleDraweeView 
     android:id="@+id/feedImage" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 

它不會顯示任何東西,但細線的顏色在圖像應該是。

但是,如果我這樣做

<com.facebook.drawee.view.SimpleDraweeView 
     android:id="@+id/feedImage" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     fresco:viewAspectRatio="1.33" 
     android:scaleType="fitXY" 
     /> 

一切工作正常(但我沒有看到完整的圖像)。

我想實現與facebook(圖像全寬和高度)相同的視圖。

  1. 我將圖像加載到回收站的列表中。圖像加載到緩存(我證實了這一點),但如果我一路下來,然後備份,我可以看到圖像被加載(Facebook沒有這個問題,他們使用相同的庫)。如果我滾動真的很慢,沒有問題。我最近從凌空改變了,之前我沒有這個問題(所以它不是回收商)。我該如何解決這個問題?

編輯:我注意到的其他事情是,如果我禁用磁盤緩存並殺死應用程序緩存不會被刪除,如文檔所述。我知道,如果我撥打ImagePipeline imagePipeline = Fresco.getImagePipeline(); Uri uri; imagePipeline.evictFromMemoryCache(uri);緩存將被刪除,但不應該自動?

+0

我完全不明白你的意思*圖像的全寬和高*,但你可以嘗試'android:adjustViewBounds =「true」'。 – natario

+0

我的意思就像你在Facebook上看到他們一樣。我會盡可能 –

+1

嘿,我面臨同樣的問題..你得到解決方案嗎?請幫助我 –

回答

0

因此,對於問題#2我不完全確定我正確理解問題,它根本不是問題。圖像可能在內存緩存中,但是存儲在緩存中的圖像在顯示在屏幕上之前仍然需要解碼,這可能是您所說的加載問題。你在快速瀏覽時只能看到這一點的原因是因爲你正在使用的RecyclerAdapter正在趕上滾動位置(這是一個有教養的猜測,絕不應該假定它是正確的)。當你慢慢移動並且看不到圖像加載時,因爲適配器在屏幕上開始加載下一個ViewHolder,但在該點之前沒有太多。所以,當你快速滾動時,我相信這只是適配器在追趕它的OnBindViewHolder調用時,而不是緩慢地移動,它不需要趕上並且在到達回收站視圖中的下一項之前加載圖像。

當應用程序像內存緩存一樣後臺運行時,磁盤緩存不會被清除,所以如果需要的話,您需要將其驅逐出去。

我對第一個問題不太確定,但我會盡力找出原因。也許嘗試將縮放類型設置爲裁剪中心或其他東西,看看是否會擺脫線條。

+0

顯然,第一個問題與我使用RecyclerView的事實有關,它沒有定義維度,因此圖像無法與父級相匹配(或類似https://github.com/facebook/壁畫/問題/ 753)。我不是在談論磁盤緩存,我沒有設置。我試着在facebook上快速滾動,加載不會發生,正如我在使用排版庫時所說的那樣,這並沒有發生。 –