GifBitmapWrapperDrawableTranscoder.java revision 44b89ba468c3f0f996bf1497d2f55fc9b50de0e8
1package com.bumptech.glide.load.resource.transcode; 2 3import android.graphics.Bitmap; 4import android.graphics.drawable.Drawable; 5import com.bumptech.glide.Resource; 6import com.bumptech.glide.load.resource.gif.GifData; 7import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapper; 8 9public class GifBitmapWrapperDrawableTranscoder implements ResourceTranscoder<GifBitmapWrapper, Drawable> { 10 private final ResourceTranscoder<Bitmap, ? extends Drawable> bitmapDrawableResourceTranscoder; 11 private final ResourceTranscoder<GifData, ? extends Drawable> gifDrawableResourceTranscoder; 12 13 public GifBitmapWrapperDrawableTranscoder(ResourceTranscoder<Bitmap, ? extends Drawable> bitmapDrawableResourceTranscoder, 14 ResourceTranscoder<GifData, ? extends Drawable> gifDrawableResourceTranscoder) { 15 this.bitmapDrawableResourceTranscoder = bitmapDrawableResourceTranscoder; 16 this.gifDrawableResourceTranscoder = gifDrawableResourceTranscoder; 17 } 18 19 @SuppressWarnings("unchecked") 20 @Override 21 public Resource<Drawable> transcode(Resource<GifBitmapWrapper> toTranscode) { 22 GifBitmapWrapper gifBitmap = toTranscode.get(); 23 Resource<Bitmap> bitmapResource = gifBitmap.getBitmapResource(); 24 25 final Resource<? extends Drawable> result; 26 if (bitmapResource != null) { 27 result = bitmapDrawableResourceTranscoder.transcode(bitmapResource); 28 } else { 29 result = gifDrawableResourceTranscoder.transcode(gifBitmap.getGifResource()); 30 } 31 // This is unchecked but always safe, anything that extends a Drawable can be safely cast to a Drawable. 32 return (Resource<Drawable>) result; 33 } 34 35 @Override 36 public String getId() { 37 return "GifBitmapWrapperDrawableTranscoder.com.bumptech.glide.load.resource.transcode"; 38 } 39} 40