如何创建 Android ViewPager 滑动 overshoot/bounce 动画?

How to create Android ViewPager swipe overshoot/bounce animation?

如何创建类似于在更改主屏幕页面时应用到应用程序的库存 android 启动器动画的动画。

这是一个 gif:https://i.stack.imgur.com/Zh7qE.gif

随着页面的滑动,图标略微超过了它们的标记,并回到了中心。我不知道如何使用 PageTransformer 做到这一点,而且我找不到任何资源来指导我正确的方向。

我曾经制作过一个一次性弹跳动画:

val pixels = binding.pager.width / 8
ValueAnimator.ofInt(0, pixels).apply {
    duration = 200L
    interpolator = DecelerateInterpolator()
    repeatCount = 3
    repeatMode = ValueAnimator.REVERSE
    addUpdateListener {
        binding.pager.scrollX = it.animatedValue as Int
    }
}.start()

使用 ofInt(0, pixels) 向左弹跳或 ofInt(0, -pixels) 向右弹跳。

在我的代码中,我使用了视图寻呼机 1/8 的拖动距离。 随意选择您想要反弹的程度: val pixels = PIXELS_TO_DRAG

最后,repeatCount 确定弹跳次数 - 3 次弹跳 2 次,5 次弹跳 3 次,7 次弹跳 4 次等。

您可以在每次寻呼机过渡结束时触发此动画并调整参数以获得所需的行为。

享受, 希望对您有所帮助:)