SnapLayoutInfoProvider

Interface

Common
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

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

velocityThe current fling movement velocity. You can use this to calculate a velocity based offset.
decayOffsetA suggested offset indicating where the animation would naturally decay to.
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

velocityThe current fling movement velocity. This may change throughout the fling animation.