This guide explains how to customize swipe and rewind animations.
The default swipe animation uses the configured direction and a default duration:
cardStackView.swipe()You can fully customize the swipe animation:
val setting = SwipeAnimationSetting.Builder()
.setDirection(Direction.Right) // Direction
.setDuration(Duration.Normal.duration) // Duration
.setInterpolator(AccelerateInterpolator()) // Interpolator
.build()
manager.setSwipeAnimationSetting(setting)
cardStackView.swipe()Direction.Left
Direction.Right
Direction.Top
Direction.BottomDuration.Fast.duration // Fast
Duration.Normal.duration // Normal (default)
Duration.Slow.duration // SlowLinearInterpolator() // Linear animation
AccelerateInterpolator() // Accelerating
DecelerateInterpolator() // Decelerating
AccelerateDecelerateInterpolator() // Accelerating and decelerating
OvershootInterpolator() // With overshoot
AnticipateInterpolator() // With anticipation
AnticipateOvershootInterpolator() // With anticipation and overshoot
BounceInterpolator() // With bounce effectval setting = SwipeAnimationSetting.Builder()
.setDirection(Direction.Right)
.setDuration(Duration.Fast.duration)
.setInterpolator(AccelerateInterpolator())
.build()
manager.setSwipeAnimationSetting(setting)
cardStackView.swipe()val setting = SwipeAnimationSetting.Builder()
.setDirection(Direction.Left)
.setDuration(Duration.Slow.duration)
.setInterpolator(BounceInterpolator())
.build()
manager.setSwipeAnimationSetting(setting)
cardStackView.swipe()The default rewind animation uses a default duration:
cardStackView.rewind()You can fully customize the rewind animation:
val setting = RewindAnimationSetting.Builder()
.setDirection(Direction.Bottom) // Direction
.setDuration(Duration.Normal.duration) // Duration
.setInterpolator(DecelerateInterpolator()) // Interpolator
.build()
manager.setRewindAnimationSetting(setting)
cardStackView.rewind()Direction.Left
Direction.Right
Direction.Top
Direction.BottomDuration.Fast.duration // Fast
Duration.Normal.duration // Normal (default)
Duration.Slow.duration // SlowSee Swipe Animation for the list of interpolators.
val setting = RewindAnimationSetting.Builder()
.setDirection(Direction.Bottom)
.setDuration(Duration.Fast.duration)
.setInterpolator(DecelerateInterpolator())
.build()
manager.setRewindAnimationSetting(setting)
cardStackView.rewind()val setting = RewindAnimationSetting.Builder()
.setDirection(Direction.Top)
.setDuration(Duration.Slow.duration)
.setInterpolator(BounceInterpolator())
.build()
manager.setRewindAnimationSetting(setting)
cardStackView.rewind()You can change animation settings at runtime:
// For Like button: Swipe to Right
likeButton.setOnClickListener {
val setting = SwipeAnimationSetting.Builder()
.setDirection(Direction.Right)
.setDuration(Duration.Normal.duration)
.setInterpolator(AccelerateInterpolator())
.build()
manager.setSwipeAnimationSetting(setting)
cardStackView.swipe()
}
// For Dislike button: Swipe to Left
dislikeButton.setOnClickListener {
val setting = SwipeAnimationSetting.Builder()
.setDirection(Direction.Left)
.setDuration(Duration.Normal.duration)
.setInterpolator(AccelerateInterpolator())
.build()
manager.setSwipeAnimationSetting(setting)
cardStackView.swipe()
}- Consistency: Use consistent animation settings for similar actions
- Performance: Avoid overly complex interpolators with many simultaneous animations
- UX: Choose duration and interpolator based on the action's importance (e.g., faster for "Skip", slower for "Like")
- Basic Usage - More basics
- Callbacks - React to animation events
- Configuration - More configuration options