SnapLayoutInfoProvider
interface SnapLayoutInfoProvider
Provides information about the layout that is using a snapFlingBehavior
. The provider should
give the following information:
- 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.
- 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
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. |
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. |