2016-04-03 40 views
32

我有一個從服務器產品線代碼一個非常基本的負荷圖像:滑翔不加載真實圖像和堅持佔位

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).into(view);

出於某種原因,我一直堅持的佔位符顯示,從來沒有的真實的形象!

我已經確保傳遞一個有效的工作網址。而且,如果我使用相同的代碼沒有佔位符,它工作正常

Glide.with(view.getContext()).load(url).into(view);

任何想法,爲什麼?

回答

68

嘗試添加.dontAnimate() 它也是由TransitionDrawable引起的,它似乎是這樣,因爲滾動後沒有動畫,因爲它被緩存。 正確的代碼是

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).dontAnimate().into(view); 

我希望能有助於您

+3

由於一些奇怪的原因,這解決了這個問題。雖然沒有動畫,但過渡很醜陋。 –

+0

它適用於我。 – Neela

+0

Glide v4.0.0中不存在佔位符 – Kenji

0

似乎很奇怪,但我只能猜到的是你的網址是有效的,因爲你已經說過。您的遙控器即使在您的圖像視圖中應用也會被下載,但佔位符以某種方式隱藏它。 Glide有一些與佔位符相關的錯誤。

我的建議是以下嘗試:

Glide.with(view.getContext()).load(url). 
placeholder(R.drawable.default_profile).fitCenter().into(view); 

因此,關鍵是佔位符通過setImageDrawable()設定所以ImageView只會顯示它像往常一樣,但你告訴滑翔使用fitCenter明確將適合加載的圖片很好地在ImageView的尺寸範圍內通過轉換,然後通過setImageDrawable()進行設置。由於擬合的圖像非常適合,中心只會繪製覆蓋視圖整個區域的圖像。

試試看。

1

使用進度爲加載GIF

Glide.with(context). 
     load(url) 
     .listener(new RequestListener<String, GlideDrawable>() { 
      @Override 
      public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
       progressBar.setVisibility(View.GONE); 
       return false; 
      } 

      @Override 
      public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
       progressBar.setVisibility(View.GONE); 
       return false; 
      } 
     }) 
     .crossFade(1000) 
     .into(imageView); 
19

檢查一下您是否在清單中添加Internet權限:

<uses-permission android:name="android.permission.INTERNET"/> 

如果沒有Internet連接,則滑翔不會觸發異常。

+2

的確!這爲我解決了麻煩。如果開發者犯了這樣一個錯誤,我認爲它會更有用,如果glide引發異常。 –

+1

F ***。經過3年的Android應用程序,這件事仍然讓我失去了幾個小時,男人。 – JMedinilla

1

如果有人遇到這樣將來你可能需要添加

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

不確定的確切原因的變化,但是我的代碼都沒有這個權限的工作,現在用它。