Package 

Class PreloadKt

    • Method Summary

      Modifier and Type Method Description
      final static <DataT extends Any> GlidePreloadingData<DataT> rememberGlidePreloadingData(Integer dataSize, Function1<Integer, DataT> dataGetter, Size preloadImageSize, Integer numberOfItemsToPreload, Integer fixedVisibleItemCount, Function2<DataT, RequestBuilder<Drawable>, RequestBuilder<Drawable>> requestBuilderTransform) Preloads ahead of the data access position on the returned GlidePreloadingData, similar to ListPreloader and com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader.
      final static <DataT extends Any> GlidePreloadingData<DataT> rememberGlidePreloadingData(List<DataT> data, Size preloadImageSize, Integer numberOfItemsToPreload, Integer fixedVisibleItemCount, Function2<DataT, RequestBuilder<Drawable>, RequestBuilder<Drawable>> requestBuilderTransform) A helper for rememberGlidePreloadingData that accepts a List.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • rememberGlidePreloadingData

        @Composable() final static <DataT extends Any> GlidePreloadingData<DataT> rememberGlidePreloadingData(Integer dataSize, Function1<Integer, DataT> dataGetter, Size preloadImageSize, Integer numberOfItemsToPreload, Integer fixedVisibleItemCount, Function2<DataT, RequestBuilder<Drawable>, RequestBuilder<Drawable>> requestBuilderTransform)

        Preloads ahead of the data access position on the returned GlidePreloadingData, similar to ListPreloader and com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader.

        The only time this API is useful is when your UI also loads an item with exactly the same options, model and size. You can ensure you're doing so by using the RequestBuilder returned by GlidePreloadingData.get

        Typical usage will look something like this:

        val glidePreloadingData =
          rememberGlidePreloadingData(myDataList, THUMBNAIL_SIZE) { myDataItem, requestBuilder ->
            // THUMBNAIL_SIZE is applied for you, but .load() is not because determining the model from
            // the underlying data isn't trivial. Don't forget to call .load()!
            requestBuilder.load(myDataItem.url)
          }
        
         LazyRow(...) {
           item { Text(text = "Header") }
           items(glidePreloadingData.size) { index ->
             val (myDataItem, preloadRequest) = glidePreloadingData[index]
             GlideImage(model = item.url, contentDescription = item.description, ...) { primaryRequest ->
               primaryRequest.thumbnail(preloadRequest)
             }
           }
         }

        Note that preloading will not occur until the first access of glidePreloadingData. If you have multiple disjoint data sets that you'd like to preload, or have some number of preceding header rows prior to your first image, you can optionally add a few manual calls to make preloading continue smoothly across data sets. One way you might do so is to call the next data set toward the end of the previous data set, e.g.:

        val itemsToPreload = 15
        items(firstDataSet.size) { index ->
          ... // Do something with first data set.
        
          // Then as you get to the end of the first data set, start preloading the next data set
          manually
          if (index >= firstDataSet.size - itemsToPreload) {
            nextDataSet[itemsToPreload - (firstDataSet.size - index)]
          }
        }
        Parameters:
        dataSize - The total number of items to display and preload.
        dataGetter - A getter for the item at the given index (ie List.get.
        preloadImageSize - The override size we'll pass to RequestBuilder.override .
        numberOfItemsToPreload - The number of items to preload ahead of the user's current position.
        fixedVisibleItemCount - The number of visible items.
        requestBuilderTransform - See ListPreloader.PreloadModelProvider.getPreloadRequestBuilder.
      • rememberGlidePreloadingData

        @Composable() final static <DataT extends Any> GlidePreloadingData<DataT> rememberGlidePreloadingData(List<DataT> data, Size preloadImageSize, Integer numberOfItemsToPreload, Integer fixedVisibleItemCount, Function2<DataT, RequestBuilder<Drawable>, RequestBuilder<Drawable>> requestBuilderTransform)

        A helper for rememberGlidePreloadingData that accepts a List. See the more general equivalent for details.