1 package com.bumptech.glide.request.target; 2 3 import android.graphics.drawable.Drawable; 4 import android.widget.ImageView; 5 6 import com.bumptech.glide.request.animation.GlideAnimation; 7 8 /** 9 * A base {@link com.bumptech.glide.request.target.Target} for displaying resources in 10 * {@link android.widget.ImageView}s. 11 * 12 * @param <Z> The type of resource that this target will display in the wrapped {@link android.widget.ImageView}. 13 */ 14 public abstract class ImageViewTarget<Z> extends ViewTarget<ImageView, Z> implements GlideAnimation.ViewAdapter { 15 16 public ImageViewTarget(ImageView view) { 17 super(view); 18 } 19 20 /** 21 * Returns the current {@link android.graphics.drawable.Drawable} being displayed in the view using 22 * {@link android.widget.ImageView#getDrawable()}. 23 */ 24 @Override 25 public Drawable getCurrentDrawable() { 26 return view.getDrawable(); 27 } 28 29 /** 30 * Sets the given {@link android.graphics.drawable.Drawable} on the view using 31 * {@link android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}. 32 * 33 * @param drawable {@inheritDoc} 34 */ 35 @Override 36 public void setDrawable(Drawable drawable) { 37 view.setImageDrawable(drawable); 38 } 39 40 /** 41 * Sets the given {@link android.graphics.drawable.Drawable} on the view using 42 * {@link android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}. 43 * 44 * @param placeholder {@inheritDoc} 45 */ 46 @Override 47 public void onLoadStarted(Drawable placeholder) { 48 view.setImageDrawable(placeholder); 49 } 50 51 /** 52 * Sets the given {@link android.graphics.drawable.Drawable} on the view using 53 * {@link android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}. 54 * 55 * @param errorDrawable {@inheritDoc} 56 */ 57 @Override 58 public void onLoadFailed(Exception e, Drawable errorDrawable) { 59 view.setImageDrawable(errorDrawable); 60 } 61 62 /** 63 * Sets the given {@link android.graphics.drawable.Drawable} on the view using 64 * {@link android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}. 65 * 66 * @param placeholder {@inheritDoc} 67 */ 68 @Override 69 public void onLoadCleared(Drawable placeholder) { 70 view.setImageDrawable(placeholder); 71 } 72 73 @Override 74 public void onResourceReady(Z resource, GlideAnimation<? super Z> glideAnimation) { 75 if (glideAnimation == null || !glideAnimation.animate(resource, this)) { 76 setResource(resource); 77 } 78 } 79 80 protected abstract void setResource(Z resource); 81 82 } 83 84