T
- The type of resource that will be loaded (e.g. Bitmap
).public abstract class CustomTarget<T> extends java.lang.Object implements Target<T>
Target
for loading resources (Bitmap
, Drawable
etc) that are used outside of View
s.
If you're loading a resource into a View
, use RequestBuilder.into(ImageView)
, a subclass of ImageViewTarget
, or
CustomViewTarget
. Using this class to load resources into View
s can prevent Glide
from correctly cancelling any previous loads, which may result in incorrect images appearing in
the view, especially in scrolling views like RecyclerView
.
You MUST implement Target.onLoadCleared(Drawable)
and ensure that all references to
any resource passed into the target in Target.onResourceReady(Object, Transition)
are removed
before Target.onLoadCleared(Drawable)
completes. Failing to do so can result in graphical
corruption, crashes caused by recycled Bitmap
s, and other undefined behavior. It is never
safe to leave Target.onLoadCleared(Drawable)
unimplemented or empty. Even if you do not
manually clear this Target
, Glide may do so automatically after certain lifecycle events
in Fragment
s and Activity
s.
This class can only be used with Target.SIZE_ORIGINAL
or when the desired resource
dimensions are known when the Target
is created. If you'd like to run some asynchronous
process and make full use of getSize(SizeReadyCallback)
and SizeReadyCallback
,
extend Target
directly instead of using this class.
SIZE_ORIGINAL
Constructor and Description |
---|
CustomTarget()
Creates a new
CustomTarget that will attempt to load the resource in its original size. |
CustomTarget(int width,
int height)
Creates a new
CustomTarget that will return the given width and height
as the requested size (unless overridden by BaseRequestOptions.override(int) in the request). |
Modifier and Type | Method and Description |
---|---|
Request |
getRequest()
Retrieves the current request for this target, should not be called outside of Glide.
|
void |
getSize(SizeReadyCallback cb)
A method to retrieve the size of this target.
|
void |
onDestroy()
Callback for when
Fragment.onDestroy() } or Activity.onDestroy() is called. |
void |
onLoadFailed(android.graphics.drawable.Drawable errorDrawable)
A mandatory lifecycle callback that is called when a load fails.
|
void |
onLoadStarted(android.graphics.drawable.Drawable placeholder)
A lifecycle callback that is called when a load is started.
|
void |
onStart()
Callback for when
Fragment.onStart() } or Activity.onStart() is called. |
void |
onStop()
Callback for when
Fragment.onStop() } or Activity.onStop() } is called. |
void |
removeCallback(SizeReadyCallback cb)
Removes the given callback from the pending set if it's still retained.
|
void |
setRequest(Request request)
Sets the current request for this target to retain, should not be called outside of Glide.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
onLoadCleared, onResourceReady
public CustomTarget()
CustomTarget
that will attempt to load the resource in its original size.
This constructor can cause very memory inefficient loads if the resource is large and can
cause OOMs. It's provided as a convenience for when you'd like to specify dimensions with
BaseRequestOptions.override(int)
. In all other cases, prefer
CustomTarget(int, int)
.
public CustomTarget(int width, int height)
CustomTarget
that will return the given width
and height
as the requested size (unless overridden by BaseRequestOptions.override(int)
in the request).width
- The requested width (> 0, or == Target.SIZE_ORIGINAL).height
- The requested height (> 0, or == Target.SIZE_ORIGINAL).java.lang.IllegalArgumentException
- if width/height doesn't meet (> 0, or == Target.SIZE_ORIGINAL)public void onStart()
LifecycleListener
Fragment.onStart()
} or Activity.onStart()
is called.onStart
in interface LifecycleListener
public void onStop()
LifecycleListener
Fragment.onStop()
} or Activity.onStop()
} is called.onStop
in interface LifecycleListener
public void onDestroy()
LifecycleListener
Fragment.onDestroy()
} or Activity.onDestroy()
is called.onDestroy
in interface LifecycleListener
public void onLoadStarted(@Nullable android.graphics.drawable.Drawable placeholder)
Target
Note - This may not be called for every load, it is possible for example for loads to fail before the load starts (when the model object is null).
Note - This method may be called multiple times before any other lifecycle method is called. Loads can be paused and restarted due to lifecycle or connectivity events and each restart may cause a call here.
onLoadStarted
in interface Target<T>
placeholder
- The placeholder drawable to optionally show, or null.public void onLoadFailed(@Nullable android.graphics.drawable.Drawable errorDrawable)
Target
Note - This may be called before Target.onLoadStarted(android.graphics.drawable.Drawable)
if the model object is null.
You must ensure that any current Drawable received in Target.onResourceReady(Object,
Transition)
is no longer used before redrawing the container (usually a View) or changing its
visibility.
onLoadFailed
in interface Target<T>
errorDrawable
- The error drawable to optionally show, or null.public final void getSize(@NonNull SizeReadyCallback cb)
Target
public final void removeCallback(@NonNull SizeReadyCallback cb)
Target
removeCallback
in interface Target<T>
cb
- The callback to remove.public final void setRequest(@Nullable Request request)
Target
setRequest
in interface Target<T>
@Nullable public final Request getRequest()
Target
getRequest
in interface Target<T>