2017-11-01 28 views
3

画像ビューのリストがあり、その中には固定URLで頻繁に更新されるものがあります。 URLの最後にタイムスタンプクエリパラメータを追加します。それは動作しますが、最新のコンテンツがクリアされると更新されました。これを防ぐ方法はありますか?Glideが画像を読み込んだときに画像がちらつく

// the one needed to update with timestamp appended 
image += "?"+String.valueOf(System.currentTimeMillis()); 
Glide.with(mContext.getApplicationContext()) 
     .load(image) 
     .error(R.drawable.default_avatar) 
     .centerCrop() 
     .crossFade() 
     .into(((VideoViewHolder) holder).img); 

// the others don't need to update 
Glide.with(mContext.getApplicationContext()) 
     .load(image) 
     .error(R.drawable.default_avatar) 
     .centerCrop() 
     .crossFade() 
     .into(((VideoViewHolder) holder).img); 

タイムスタンプが付加されていないものはすべていいです。

+0

クロスフェードの代わりにフリッカーが表示されますか? – X3Btel

+0

@ X3Btelクロスフェードですが、これは私が望むものではありません。もう一度プレースホルダで始めるのは嫌です。私はちょうど最新のものにシームレスに更新したいです –

+0

その後、IDは更新可能でないようにすべてのものを最初にロードすることを提案します。そして、あなたのメソッドを更新する必要がある画像のために、クロスフェードなしで – X3Btel

答えて

0

エミュレータを使用している場合は、このようなことが起こります。 実際の物理デバイスを使用するか、エミュレータを変更してみてください。

+0

ああ本当に?私はそうは思わない –

+0

それは物理的なデバイスです –

+0

@DayoChoulは 'notifyDataSetChanged'を呼び出していますか? –

2

あなたはグライド3.xを使用して直接小さなクロスフェード効果なしで画像を表示したい場合は、グライド要求ビルダーに.dontAnimate()を呼び出し、この

Glide 
.with(context) 
.load(filepath) 
.asBitmap() 
.diskCacheStrategy(DiskCacheStrategy.NONE) 
.skipMemoryCache(true) 
.dontAnimate() 
.into(new SimpleTarget<Bitmap>() { 

     @Override 
     public void onResourceReady(Bitmap arg0, GlideAnimation<? super Bitmap> arg1) { 
      // TODO Auto-generated method stub 
      holder.mItemView.setImageBitmap(arg0); 
     } 
    }); 

をお試しください: 以上の読み取りのためにこの:Glide — Placeholders & Fade Animations

ハッピーコーディング!

+0

同じです。現在の内容が明確でないと画像を更新する方法はありますか? –

+0

try skipMemoryCache(false)。現在のデータは変更されるまでキャッシュに保持されます。 –

関連する問題