github google/accompanist v0.3.0

latest releases: v0.37.2, v0.37.1, v0.37.0...
4 years ago

Built to work with Jetpack Compose v1.0.0-alpha04

What’s Changed

A big release for Accompanist! 😅

New Picasso (and Image Loading Core) library

We now have a new Picasso integration library 🖌 (#98)

dependencies {
    implementation "dev.chrisbanes.accompanist:accompanist-picasso:0.3.0"
}

All of the common/utility code from the Coil integration library has been extracted to a new Image Loading Core library (which both depend on) (#96).

The new @Composable fun PicassoImage() provides (mostly) the same functionality as CoilImage.

This is primarily for apps which are already using Picasso and don't want to switch to Coil. We plan on also adding an integration for Glide too but ran out of time for this release (PRs welcome if anyone wants to take this on).

GIF support in Coil

We now have a new way to display Android Drawables in Compose, which also supports animated drawables. This means that we can now properly support Coil’s GIF support.

API updates

We've been busy refining the API for both the Coil and Picasso libraries:

API: Function overloads

Each library now provides two different types of 'image loading' function. If we use the CoilImage functions as examples:

1: Simple option

This is what most developers will use (I think). We provide a number of content slots parameters, where you can provide different content whilst the image is loading/failed. We also provide a simple fadeIn parameter allowing you to turn on the default animation.

CoilImage(
  data = "https://www.image.url",
  fadeIn = true,
  loading = {
    Stack(Modifier.fillMaxSize()) {
      CircularProgressIndicator(Modifier.align(Alignment.Center))
    }
  },
  error = { /* TODO */ },
)

2: Manual, with more control

This option allows you to provide custom layout to display the resulting image load result.

CoilImage(
  data = "https://www.image.url",
) { imageState ->
  when (imageState) {
    is ImageLoadState.Success -> {
      MaterialLoadingImage(painter = imageState.painter)
    }
    is ImageLoadState.Error -> // TODO
    ImageLoadState.Loading -> // TODO
    ImageLoadState.Empty -> // TODO
  }
}

PicassoImage has the equivalent functions as these.

Added in #89 and #93

API: New MaterialLoadingImage composable

We've extracted the functionality behind CoilImageWithCrossfade into a new composable called MaterialLoadingImage. The API is similar to Image with parameters for controlling the animation.

API: CoilImageWithCrossfade is deprecated

With the new fadeIn parameter, and MaterialLoadingImage we can now deprecate the old CoilImageWithCrossfade. 🗑️

API: New requestBuilder parameters

Both CoilImage & PicassoImage now provide a lambda parameter allowing you to customize the relevant loading request:

PicassoImage(
    data = "https://www.image.url",
    requestBuilder = {
        rotate(90f)
    }
)

API: Package name changes

Because we've moved a load of common code out to the new Image Loading Core, the package name for these functions/classes has changed. Few developers would have been using these, but if you were, they've moved to dev.chrisbanes.accompanist.imageloading.

All PRs

Don't miss a new accompanist release

NewReleases is sending notifications on new releases.