---
title: "SnapLayoutInfoProvider"
description: "Provides information about the layout that is using a [snapFlingBehavior]. The provider should
give the following information:
1) Snapping offset: The next snap position offset. This needs to be provided by the layout where  the snapping is happened and will represent the final settling position of this layout.
2) Approach offset: An offset to be consumed before snapping to a defined bound. If not  overridden this will provide a decayed snapping behavior.

In snapping, the approach offset and the snapping offset can be used to control how a snapping
animation will look in a given layout. The complete snapping animation can be split into 2
phases: approach and snapping.

Approach: animate to the offset returned by [calculateApproachOffset]. This will use a decay
animation if possible, otherwise the snap animation. Snapping: once the approach offset is
reached, snap to the offset returned by [calculateSnapOffset] using the snap animation."
type: "interface"
---

<div class='type'>Interface</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>



```kotlin
interface SnapLayoutInfoProvider
```


Provides information about the layout that is using a `snapFlingBehavior`. The provider should
give the following information:
1) Snapping offset: The next snap position offset. This needs to be provided by the layout where  the snapping is happened and will represent the final settling position of this layout.
2) Approach offset: An offset to be consumed before snapping to a defined bound. If not  overridden this will provide a decayed snapping behavior.

In snapping, the approach offset and the snapping offset can be used to control how a snapping
animation will look in a given layout. The complete snapping animation can be split into 2
phases: approach and snapping.

Approach: animate to the offset returned by `calculateApproachOffset`. This will use a decay
animation if possible, otherwise the snap animation. Snapping: once the approach offset is
reached, snap to the offset returned by `calculateSnapOffset` using the snap animation.


## Functions

```kotlin
fun calculateApproachOffset(velocity: Float, : Float): Float
```


Calculate the distance to navigate before settling into the next snapping bound. By default
this is `decayOffset` a suggested offset given by `snapFlingBehavior` to indicate where the
animation would naturally decay if using `velocity`. Returning a value higher than
`decayOffset` is valid and will force `snapFlingBehavior` to use a target based animation
spec to run the approach phase since we won't be able to naturally decay to the proposed
offset. If a value smaller than or equal to `decayOffset` is returned `snapFlingBehavior`
will run a decay animation until it reaches the returned value. If zero is specified, that
means there won't be an approach phase and there will only be snapping.

#### Parameters

| | |
| --- | --- |
| velocity | The current fling movement velocity. You can use this to calculate a velocity based offset. |
| decayOffset | A suggested offset indicating where the animation would naturally decay to. |



```kotlin
fun calculateSnapOffset(velocity: Float): Float
```


Given a target placement in a layout, the snapping offset is the next snapping position this
layout can be placed in. The target placement should be in the direction of `velocity`.

#### Parameters

| | |
| --- | --- |
| velocity | The current fling movement velocity. This may change throughout the fling animation. |




