Skip to content

Latest commit

 

History

History

glide

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Glide for Jetpack Compose

Maven Central

This library brings easy-to-use composable which can fetch and display images from external sources, such as network, using the Glide image loading library.

Glide logo

GlideImage()

The primary API is via the GlideImage() functions. There are a number of function versions available.

The simplest usage is like so:

GlideImage(
    data = "https://picsum.photos/300/300",
    contentDescription = "My content description",
)

This loads the data passed in with Glide, and then displays the resulting image using the standard Image composable.

You can also customize the Glide RequestBuilder through the requestBuilder parameter. This allows usage of things like (but not limited to) transformations:

GlideImage(
    data = "https://picsum.photos/300/300",
    contentDescription = "My content description",
    requestBuilder = {
        val options = RequestOptions()
        options.centerCrop()

        apply(options)
    },
)

It also provides optional content 'slots', allowing you to provide custom content to be displayed when the request is loading, and/or if the image request failed:

GlideImage(
    data = "https://picsum.photos/300/300",
    contentDescription = "My content description",
    loading = {
        Box(Modifier.matchParentSize()) {
            CircularProgressIndicator(Modifier.align(Alignment.Center))
        }
    },
    error = {
        Image(asset = imageResource(R.drawable.ic_error))
    }
)

Fade-in animation

This library has built-in support for animating loaded images in, using a fade-in animation.

There are two ways to enable the animation:

fadeIn parameter

A fadeIn: Boolean parameter has been added to GlideImage (default: false). When enabled, a default fade-in animation will be used when the image is successfully loaded:

GlideImage(
    data = "https://picsum.photos/300/300",
    contentDescription = "My content description",
    fadeIn = true
)

Custom content

If you need more control over the animation, or you want to provide custom layout for the loaded image, you can use the content composable version of GlideImage:

GlideImage(
    data = "https://picsum.photos/300/300",
) { imageState ->
    when (imageState) {
        is ImageLoadState.Success -> {
            MaterialLoadingImage(
                result = imageState,
                contentDescription = "My content description",
                fadeInEnabled = true,
                fadeInDurationMs = 600,
            )
        }
        is ImageLoadState.Error -> /* TODO */
        ImageLoadState.Loading -> /* TODO */
        ImageLoadState.Empty -> /* TODO */
    }
}

GIFs

Accompanist Glide supports GIFs through Glide's own GIF support. There's nothing you need to do, it should just work.

Example GIF

Custom RequestManager

If you wish to provide a default RequestManager to use across all of your GlideImage calls, we provide the LocalRequestManager composition local.

You can use it like so:

val requestManager = Glide.with(...)
    // customize the RequestManager as needed
    .build()

CompositionLocalProvider(LocalRequestManager provides requestManager) {
    // This will automatically use the value of LocalRequestManager
    GlideImage(
        data = ...
    )
}

For more information on composition locals, see here.

Download

Maven Central

repositories {
    mavenCentral()
}

dependencies {
    implementation "com.google.accompanist:accompanist-glide:<version>"
}

Snapshots of the development version are available in Sonatype's snapshots repository. These are updated on every commit.