LazyGridPrefetchStrategy
@ExperimentalFoundationApi
interface LazyGridPrefetchStrategy
Implementations of this interface control which indices of a LazyGrid should be prefetched (precomposed and premeasured during idle time) as the user interacts with it.
Implementations should invoke LazyGridPrefetchScope.scheduleLinePrefetch
to schedule prefetches
from the onScroll
and onVisibleItemsUpdated
callbacks. If any of the returned PrefetchHandles
no longer need to be prefetched, use LazyLayoutPrefetchState.PrefetchHandle.cancel
to cancel
the request.
Properties
Deprecated Customization of PrefetchScheduler is no longer supported. LazyLayout will attach an appropriate scheduler internally.
val prefetchScheduler: PrefetchScheduler?
A PrefetchScheduler
implementation which will be used to execute prefetch requests for this
strategy implementation. If null, the default PrefetchScheduler
for the platform will be
used.
Functions
fun LazyGridPrefetchScope.onScroll(delta: Float, layoutInfo: LazyGridLayoutInfo)
onScroll is invoked when the LazyGrid scrolls, whether or not the visible items have changed.
If the visible items have also changed, then this will be invoked in the same frame after
onVisibleItemsUpdated
.
Parameters
delta | the change in scroll direction. Delta < 0 indicates scrolling down while delta > 0 indicates scrolling up. |
layoutInfo | the current LazyGridLayoutInfo |
fun LazyGridPrefetchScope.onVisibleItemsUpdated(layoutInfo: LazyGridLayoutInfo)
onVisibleItemsUpdated is invoked when the LazyGrid scrolls if the visible items have changed.
Parameters
layoutInfo | the current LazyGridLayoutInfo . Info about the updated visible items can be found in LazyGridLayoutInfo.visibleItemsInfo . |
fun NestedPrefetchScope.onNestedPrefetch(firstVisibleItemIndex: Int)
onNestedPrefetch is invoked when a parent LazyLayout has prefetched content which contains this LazyGrid. It gives this LazyGrid a chance to request prefetch for some of its own children before coming onto screen.
Implementations can use NestedPrefetchScope.schedulePrefetch
to schedule child prefetches.
For example, this is useful if this LazyGrid is a LazyRow that is a child of a LazyColumn: in
that case, onNestedPrefetch
can schedule the children it expects to be visible when it
comes onto screen, giving the LazyLayout infra a chance to compose these children ahead of
time and reduce jank.
Generally speaking, onNestedPrefetch
should only request prefetch for children that it
expects to actually be visible when this grid is scrolled into view.
Parameters
firstVisibleItemIndex | the index of the first visible item. It should be used to start prefetching from the correct index in case the grid has been created at a non-zero offset. |