2017-07-07 182 views
1

美好的一天。使用Glide从URL加载占位符以在加载GIF时显示(Android)

什么我是这样的:

Glide 
      .with(this) 
      .load(imageUrl) 
      .asGif() 
      .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
      .placeholder(R.drawable.gif) 
      .into(imageView); 

但是,相反,我想利用滑行来加载相同的GIF asBitmap()作为占位符使用,而它的加载实际GIF。

一样,如果我能做到:.placeholder(Glide.with(this).load(imageUrl).asBitmap())

在此先感谢。

回答

1

你必须通过URL中.thumbnail(URL)作为

.thumbnail(Glide 
     .with(context) 
     .load(Url) 
     .asBitmap() 

或者这样: -

DrawableRequestBuilder<String> thumbnail = Glide.with(context) 
      .diskCacheStrategy(DiskCacheStrategy.ALL) 
      .load(url); 
    try { 
     Glide.with(context) 
       .diskCacheStrategy(DiskCacheStrategy.ALL) 
       .error(placeholder) 
       .load(url) 
       .thumbnail(thumbnail) 
       .into(imageView); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

参考:

https://github.com/bumptech/glide/issues/1198

https://futurestud.io/tutorials/glide-thumbnails

https://github.com/bumptech/glide/issues/362

private void loadImage(ImageView image, @RawRes int typeID, String imagePath) { 
Context context = image.getContext(); 
BitmapPool pool = Glide.get(context).getBitmapPool(); 

// OPTION 1 Bitmap 
Glide 
    .with(image.getContext()) 
    .load(imagePath) 
    .asBitmap() 
    .animate(android.R.anim.fade_in) 
    .placeholder(R.drawable.image_loading) 
    .error(R.drawable.image_error) 
    .thumbnail(Glide 
     .with(context) 
     .load(typeID) 
     .asBitmap() 
     .imageDecoder(new SvgBitmapDecoder(pool)) // implements ResourceDecoder<InputStream, Bitmap> 
    ) 
    .into(image) 
; 

// OPTION 2 GlideDrawable 
Glide 
    .with(image.getContext()) 
    .load(imagePath) 
    .crossFade() 
    .placeholder(R.drawable.image_loading) 
    .error(R.drawable.image_error) 
    .thumbnail(Glide 
     .with(context) 
     .load(typeID) 
     .decoder(new GifBitmapWrapperResourceDecoder(
        new ImageVideoBitmapDecoder(
         new SvgBitmapDecoder(pool), 
         null /*fileDescriptorDecoder*/ 
        ), 
        // just to satisfy GifBitmapWrapperResourceDecoder.getId() which throws NPE otherwise 
        new GifResourceDecoder(context, pool), 
        pool 
       ) 
     ) 
    ) 
    .into(image) 
; 
}