1package com.bumptech.glide; 2 3import android.content.Context; 4import android.graphics.Bitmap; 5import android.graphics.drawable.Drawable; 6import android.view.animation.Animation; 7import com.bumptech.glide.load.Encoder; 8import com.bumptech.glide.load.ResourceDecoder; 9import com.bumptech.glide.load.ResourceEncoder; 10import com.bumptech.glide.load.Transformation; 11import com.bumptech.glide.load.model.ImageVideoWrapper; 12import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapper; 13import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperTransformation; 14import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; 15import com.bumptech.glide.manager.RequestTracker; 16import com.bumptech.glide.provider.LoadProvider; 17import com.bumptech.glide.request.DrawableCrossFadeViewAnimation; 18import com.bumptech.glide.request.RequestListener; 19import com.bumptech.glide.request.ViewPropertyAnimation; 20 21import java.io.InputStream; 22 23public class DrawableRequestBuilder<ModelType> extends 24 GenericRequestBuilder<ModelType, ImageVideoWrapper, GifBitmapWrapper, Drawable> { 25 private final Glide glide; 26 private final Context context; 27 28 DrawableRequestBuilder(Context context, ModelType model, 29 LoadProvider<ModelType, ImageVideoWrapper, GifBitmapWrapper, Drawable> loadProvider, Glide glide, 30 RequestTracker requestTracker) { 31 super(context, model, loadProvider, Drawable.class, glide, requestTracker); 32 this.context = context; 33 this.glide = glide; 34 } 35 36 public DrawableRequestBuilder<ModelType> thumbnail( 37 DrawableRequestBuilder<ModelType> thumbnailRequest) { 38 super.thumbnail(thumbnailRequest); 39 return this; 40 } 41 42 @Override 43 public DrawableRequestBuilder<ModelType> thumbnail( 44 GenericRequestBuilder<ModelType, ImageVideoWrapper, GifBitmapWrapper, Drawable> thumbnailRequest) { 45 super.thumbnail(thumbnailRequest); 46 return this; 47 } 48 49 @Override 50 public DrawableRequestBuilder<ModelType> thumbnail(float sizeMultiplier) { 51 super.thumbnail(sizeMultiplier); 52 return this; 53 } 54 55 @Override 56 public DrawableRequestBuilder<ModelType> sizeMultiplier( 57 float sizeMultiplier) { 58 super.sizeMultiplier(sizeMultiplier); 59 return this; 60 } 61 62 @Override 63 public DrawableRequestBuilder<ModelType> decoder( 64 ResourceDecoder<ImageVideoWrapper, GifBitmapWrapper> decoder) { 65 super.decoder(decoder); 66 return this; 67 } 68 69 @Override 70 public DrawableRequestBuilder<ModelType> cacheDecoder( 71 ResourceDecoder<InputStream, GifBitmapWrapper> cacheDecoder) { 72 super.cacheDecoder(cacheDecoder); 73 return this; 74 } 75 76 @Override 77 public DrawableRequestBuilder<ModelType> encoder( 78 ResourceEncoder<GifBitmapWrapper> encoder) { 79 super.encoder(encoder); 80 return this; 81 } 82 83 @Override 84 public DrawableRequestBuilder<ModelType> priority(Priority priority) { 85 super.priority(priority); 86 return this; 87 } 88 89 public DrawableRequestBuilder<ModelType> centerCrop() { 90 return transform(glide.getDrawableCenterCrop()); 91 } 92 93 public DrawableRequestBuilder<ModelType> fitCenter() { 94 return transform(glide.getDrawableFitCenter()); 95 } 96 97 public DrawableRequestBuilder<ModelType> bitmapTransform(Transformation<Bitmap> bitmapTransformation) { 98 return transform(new GifBitmapWrapperTransformation(bitmapTransformation)); 99 } 100 101 @Override 102 public DrawableRequestBuilder<ModelType> transform(Transformation<GifBitmapWrapper> transformation) { 103 super.transform(transformation); 104 return this; 105 } 106 107 @Override 108 public DrawableRequestBuilder<ModelType> transcoder( 109 ResourceTranscoder<GifBitmapWrapper, Drawable> transcoder) { 110 super.transcoder(transcoder); 111 return this; 112 } 113 114 public DrawableRequestBuilder<ModelType> crossFade() { 115 super.animate(new DrawableCrossFadeViewAnimation.DrawableCrossFadeFactory()); 116 return this; 117 } 118 119 public DrawableRequestBuilder<ModelType> crossFade(int duration) { 120 super.animate(new DrawableCrossFadeViewAnimation.DrawableCrossFadeFactory(duration)); 121 return this; 122 } 123 124 public DrawableRequestBuilder<ModelType> crossFade(Animation animation, int duration) { 125 super.animate(new DrawableCrossFadeViewAnimation.DrawableCrossFadeFactory(animation, duration)); 126 return this; 127 } 128 129 public DrawableRequestBuilder<ModelType> crossFade(int animationId, int duration) { 130 super.animate(new DrawableCrossFadeViewAnimation.DrawableCrossFadeFactory(context, animationId, duration)); 131 return this; 132 } 133 134 @Override 135 public DrawableRequestBuilder<ModelType> animate(ViewPropertyAnimation.Animator animator) { 136 super.animate(animator); 137 return this; 138 } 139 140 @Override 141 public DrawableRequestBuilder<ModelType> animate(int animationId) { 142 super.animate(animationId); 143 return this; 144 } 145 146 @Override 147 public DrawableRequestBuilder<ModelType> animate(Animation animation) { 148 super.animate(animation); 149 return this; 150 } 151 152 @Override 153 public DrawableRequestBuilder<ModelType> placeholder(int resourceId) { 154 super.placeholder(resourceId); 155 return this; 156 } 157 158 @Override 159 public DrawableRequestBuilder<ModelType> placeholder(Drawable drawable) { 160 super.placeholder(drawable); 161 return this; 162 } 163 164 @Override 165 public DrawableRequestBuilder<ModelType> error(int resourceId) { 166 super.error(resourceId); 167 return this; 168 } 169 170 @Override 171 public DrawableRequestBuilder<ModelType> error(Drawable drawable) { 172 super.error(drawable); 173 return this; 174 } 175 176 @Override 177 public DrawableRequestBuilder<ModelType> listener( 178 RequestListener<ModelType, Drawable> requestListener) { 179 super.listener(requestListener); 180 return this; 181 } 182 183 @Override 184 public DrawableRequestBuilder<ModelType> skipMemoryCache(boolean skip) { 185 super.skipMemoryCache(skip); 186 return this; 187 } 188 189 @Override 190 public DrawableRequestBuilder<ModelType> skipDiskCache(boolean skip) { 191 super.skipDiskCache(skip); 192 return this; 193 } 194 195 @Override 196 public DrawableRequestBuilder<ModelType> skipCache(boolean skip) { 197 super.skipCache(skip); 198 return this; 199 } 200 201 @Override 202 public DrawableRequestBuilder<ModelType> override(int width, int height) { 203 super.override(width, height); 204 return this; 205 } 206 207 @Override 208 public DrawableRequestBuilder<ModelType> cacheSource(boolean cacheSource) { 209 super.cacheSource(cacheSource); 210 return this; 211 } 212 213 @Override 214 public DrawableRequestBuilder<ModelType> sourceEncoder(Encoder<ImageVideoWrapper> sourceEncoder) { 215 super.sourceEncoder(sourceEncoder); 216 return this; 217 } 218} 219