package cl.monsoon.s1next.widget; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.drawable.Drawable; import com.bumptech.glide.load.resource.drawable.GlideDrawable; /** * Implements {@link Drawable.Callback} in order to show animated GIFs in the TextView. * <p> * Used in {@link cl.monsoon.s1next.widget.GlideImageGetter}. */ final class UrlDrawable extends Drawable implements Drawable.Callback { private GlideDrawable mDrawable; @Override public void draw(Canvas canvas) { if (mDrawable != null) { mDrawable.draw(canvas); } } @Override public void setAlpha(int alpha) { if (mDrawable != null) { mDrawable.setAlpha(alpha); } } @Override public void setColorFilter(ColorFilter cf) { if (mDrawable != null) { mDrawable.setColorFilter(cf); } } @Override public int getOpacity() { if (mDrawable != null) { return mDrawable.getOpacity(); } return 0; } public void setDrawable(GlideDrawable drawable) { if (this.mDrawable != null) { this.mDrawable.setCallback(null); } drawable.setCallback(this); this.mDrawable = drawable; } @Override public void invalidateDrawable(Drawable who) { if (getCallback() != null) { getCallback().invalidateDrawable(who); } } @Override public void scheduleDrawable(Drawable who, Runnable what, long when) { if (getCallback() != null) { getCallback().scheduleDrawable(who, what, when); } } @Override public void unscheduleDrawable(Drawable who, Runnable what) { if (getCallback() != null) { getCallback().unscheduleDrawable(who, what); } } }