Skip to content

Instantly share code, notes, and snippets.

@tonyjs
Created August 3, 2017 05:02
Show Gist options
  • Save tonyjs/b1883b83a354b5bf03bf0a6e4c423e6f to your computer and use it in GitHub Desktop.
Save tonyjs/b1883b83a354b5bf03bf0a6e4c423e6f to your computer and use it in GitHub Desktop.
DynamicImageViewTarget
/**
* Created by tonyjs on 16. 5. 9..
*/
public class DynamicImageViewTarget extends GlideDrawableImageViewTarget {
public static final String TAG = DynamicImageViewTarget.class.getSimpleName();
private ImageView.ScaleType placeHolderScaleType = ImageView.ScaleType.FIT_CENTER;
private ImageView.ScaleType actualImageScaleType = ImageView.ScaleType.FIT_CENTER;
private ImageView.ScaleType errorScaleType = ImageView.ScaleType.FIT_CENTER;
private DynamicImageViewTarget(ImageView view,
ImageView.ScaleType placeHolderScaleType,
ImageView.ScaleType actualImageScaleType,
ImageView.ScaleType errorScaleType) {
super(view);
this.placeHolderScaleType = placeHolderScaleType;
this.actualImageScaleType = actualImageScaleType;
this.errorScaleType = errorScaleType;
}
public static Builder newBuilder() {
return new Builder();
}
@Override
public void onLoadStarted(Drawable placeholder) {
if (placeHolderScaleType != null) {
view.setScaleType(placeHolderScaleType);
}
super.onLoadStarted(placeholder);
}
@Override
public void onLoadFailed(Exception e, Drawable errorDrawable) {
if (errorScaleType != null) {
view.setScaleType(errorScaleType);
}
Log.e(TAG, Log.getStackTraceString(e));
super.onLoadFailed(e, errorDrawable);
}
@Override
public void onResourceReady(GlideDrawable resource,
GlideAnimation<? super GlideDrawable> animation) {
if (actualImageScaleType != null) {
view.setScaleType(actualImageScaleType);
}
super.onResourceReady(resource, animation);
}
public static final class Builder {
private ImageView.ScaleType placeHolderScaleType;
private ImageView.ScaleType actualImageScaleType;
private ImageView.ScaleType errorScaleType;
Builder() {
}
public Builder placeHolderScaleType(ImageView.ScaleType scaleType) {
placeHolderScaleType = scaleType;
return this;
}
public Builder actualImageScaleType(ImageView.ScaleType scaleType) {
actualImageScaleType = scaleType;
return this;
}
public Builder errorScaleType(ImageView.ScaleType scaleType) {
errorScaleType = scaleType;
return this;
}
public DynamicImageViewTarget build(ImageView imageView) {
return new DynamicImageViewTarget(imageView,
placeHolderScaleType, actualImageScaleType, errorScaleType);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment