A fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.
—
Core request management functionality providing lifecycle-aware image loading with the fluent API pattern. This is the foundation of all Glide operations.
Main facade class providing static methods to create lifecycle-aware request managers.
/**
* Main entry point for Glide requests with automatic lifecycle management
*/
public final class Glide {
/** Create request manager tied to application lifecycle */
@NonNull public static RequestManager with(@NonNull Context context);
/** Create request manager tied to activity lifecycle */
@NonNull public static RequestManager with(@NonNull Activity activity);
/** Create request manager tied to fragment lifecycle */
@NonNull public static RequestManager with(@NonNull Fragment fragment);
/** Create request manager tied to FragmentActivity lifecycle */
@NonNull public static RequestManager with(@NonNull FragmentActivity activity);
/** Get Glide singleton instance */
@NonNull public static Glide get(@NonNull Context context);
/** Initialize with custom configuration */
public static void init(@NonNull Context context, @NonNull GlideBuilder builder);
/** Cleanup resources */
public static void tearDown();
}Usage Examples:
// Application context - lives for app lifetime
RequestManager appManager = Glide.with(getApplicationContext());
// Activity context - automatically paused/resumed with activity
RequestManager activityManager = Glide.with(this); // from Activity
// Fragment context - handles fragment lifecycle
RequestManager fragmentManager = Glide.with(this); // from FragmentManages requests with lifecycle awareness and provides entry points for creating request builders.
/**
* Manages image requests with lifecycle awareness
*/
public class RequestManager implements ComponentCallbacks2, LifecycleListener {
/** Load image from URL string */
@NonNull public RequestBuilder<Drawable> load(@Nullable String string);
/** Load image from URI */
@NonNull public RequestBuilder<Drawable> load(@Nullable Uri uri);
/** Load image from File */
@NonNull public RequestBuilder<Drawable> load(@Nullable File file);
/** Load image from resource ID */
@NonNull public RequestBuilder<Drawable> load(@Nullable @DrawableRes Integer resourceId);
/** Load image from byte array */
@NonNull public RequestBuilder<Drawable> load(@Nullable byte[] model);
/** Load image from Bitmap */
@NonNull public RequestBuilder<Drawable> load(@Nullable Bitmap bitmap);
/** Load image from Drawable */
@NonNull public RequestBuilder<Drawable> load(@Nullable Drawable drawable);
/** Create request builder for specific type */
@NonNull public <ResourceType> RequestBuilder<ResourceType> as(@NonNull Class<ResourceType> resourceClass);
/** Download only (no display) */
@NonNull public RequestBuilder<File> download(@Nullable Object model);
/** Download image data as bytes */
@NonNull public RequestBuilder<File> downloadOnly();
/** Clear specific target */
public void clear(@NonNull View view);
public void clear(@Nullable Target<?> target);
/** Lifecycle management */
public void pauseRequests();
public void pauseAllRequests();
public void resumeRequests();
public void pauseRequestsRecursive();
public void resumeRequestsRecursive();
/** Check if paused */
public boolean isPaused();
/** Apply default request options to all requests */
@NonNull public RequestManager applyDefaultRequestOptions(@NonNull RequestOptions requestOptions);
/** Set default transition options */
@NonNull public <T> RequestManager setDefaultTransitionOptions(@NonNull Class<T> clazz, @Nullable TransitionOptions<?, T> options);
}Usage Examples:
RequestManager requestManager = Glide.with(context);
// Load different types of sources
requestManager.load("https://example.com/image.jpg").into(imageView);
requestManager.load(R.drawable.placeholder).into(imageView);
requestManager.load(new File("/path/to/image.png")).into(imageView);
requestManager.load(uriFromContentProvider).into(imageView);
// Type-specific requests
requestManager.as(Bitmap.class).load(imageUrl).into(customBitmapTarget);
requestManager.as(GifDrawable.class).load(gifUrl).into(imageView);
// Download only
requestManager.download(imageUrl).into(downloadTarget);
// Lifecycle management
requestManager.pauseRequests(); // Pause all requests
requestManager.resumeRequests(); // Resume requests
requestManager.clear(imageView); // Clear specific requestFluent API for configuring image requests with method chaining.
/**
* Fluent request builder for configuring image loading
*/
public class RequestBuilder<TranscodeType> implements Cloneable, ModelTypes<RequestBuilder<TranscodeType>> {
/** Load from various model types (inherited from ModelTypes) */
@NonNull public RequestBuilder<TranscodeType> load(@Nullable Object model);
@NonNull public RequestBuilder<TranscodeType> load(@Nullable Bitmap bitmap);
@NonNull public RequestBuilder<TranscodeType> load(@Nullable Drawable drawable);
@NonNull public RequestBuilder<TranscodeType> load(@Nullable String string);
@NonNull public RequestBuilder<TranscodeType> load(@Nullable Uri uri);
@NonNull public RequestBuilder<TranscodeType> load(@Nullable File file);
@NonNull public RequestBuilder<TranscodeType> load(@Nullable @RawRes @DrawableRes Integer resourceId);
@NonNull public RequestBuilder<TranscodeType> load(@Nullable byte[] model);
/** Apply request options */
@NonNull public RequestBuilder<TranscodeType> apply(@NonNull RequestOptions requestOptions);
/** Set thumbnail request */
@NonNull public RequestBuilder<TranscodeType> thumbnail(@Nullable RequestBuilder<TranscodeType> thumbnailRequest);
@NonNull public RequestBuilder<TranscodeType> thumbnail(float sizeMultiplier);
/** Set request listener */
@NonNull public RequestBuilder<TranscodeType> listener(@Nullable RequestListener<TranscodeType> requestListener);
/** Add request listener */
@NonNull public RequestBuilder<TranscodeType> addListener(@Nullable RequestListener<TranscodeType> requestListener);
/** Set error request */
@NonNull public RequestBuilder<TranscodeType> error(@Nullable RequestBuilder<TranscodeType> errorBuilder);
/** Clone request builder */
@SuppressWarnings("unchecked")
@CheckResult
@Override
public RequestBuilder<TranscodeType> clone();
/** Load into target */
@NonNull public <Y extends Target<TranscodeType>> Y into(@NonNull Y target);
@NonNull public ViewTarget<ImageView, TranscodeType> into(@NonNull ImageView view);
/** Submit for background execution */
@NonNull public FutureTarget<TranscodeType> submit(int width, int height);
@NonNull public FutureTarget<TranscodeType> submit();
/** Preload into cache */
@NonNull public Target<TranscodeType> preload(int width, int height);
@NonNull public Target<TranscodeType> preload();
}Usage Examples:
RequestBuilder<Drawable> builder = Glide.with(context).load(imageUrl);
// Method chaining
builder
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.centerCrop()
.into(imageView);
// Thumbnail loading
Glide.with(context)
.load(highResImageUrl)
.thumbnail(0.25f) // Load at 25% size first
.into(imageView);
// Error fallback
Glide.with(context)
.load(primaryImageUrl)
.error(Glide.with(context).load(fallbackImageUrl))
.into(imageView);
// Preloading
Glide.with(context)
.load(imageUrl)
.preload(300, 300);
// Background loading
FutureTarget<Drawable> future = Glide.with(context)
.load(imageUrl)
.submit(500, 500);Methods for controlling request execution and lifecycle.
/**
* Request interface for lifecycle control
*/
public interface Request {
/** Begin request execution */
void begin();
/** Clear/cancel request */
void clear();
/** Check if request is paused */
boolean isPaused();
/** Pause request execution */
void pause();
/** Check request state */
boolean isRunning();
boolean isComplete();
boolean isCleared();
boolean isFailed();
/** Check if requests are equivalent */
boolean isEquivalentTo(@NonNull Request other);
}Usage Examples:
// Get request from target
Target<Drawable> target = Glide.with(context)
.load(imageUrl)
.into(imageView);
Request request = target.getRequest();
if (request != null) {
request.pause(); // Pause specific request
request.clear(); // Cancel and clear request
}
// Check request state
if (request.isRunning()) {
// Request is currently executing
}// Model types interface
public interface ModelTypes<T> {
@NonNull T load(@Nullable Object model);
@NonNull T load(@Nullable Bitmap bitmap);
@NonNull T load(@Nullable Drawable drawable);
@NonNull T load(@Nullable String string);
@NonNull T load(@Nullable Uri uri);
@NonNull T load(@Nullable File file);
@NonNull T load(@Nullable @RawRes @DrawableRes Integer resourceId);
@NonNull T load(@Nullable byte[] model);
}
// Lifecycle listener interface
public interface LifecycleListener {
void onStart();
void onStop();
void onDestroy();
}Install with Tessl CLI
npx tessl i tessl/maven-com-github-bumptech-glide--glide