Created
August 3, 2017 05:02
-
-
Save tonyjs/b1883b83a354b5bf03bf0a6e4c423e6f to your computer and use it in GitHub Desktop.
DynamicImageViewTarget
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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