首页 > 解决方案 > 具有三次函数的 MotionLayout motionInterpolator 无法按预期工作

问题描述

我有一个 MotionLayout 过渡,它带有一个带有三次贝塞尔函数的运动插值器:

    <Transition
        android:id="@+id/transition01"
        motion:constraintSetStart="@+id/start"
        motion:constraintSetEnd="@+id/end"
        motion:motionInterpolator="cubic(.81,.1,.92,1.4)"
        motion:duration="1000">

我希望在过渡结束时会在动画结束时产生类似“弹簧”的效果,如下所示: https ://cubic-bezier.com/#.81,.1,.92,1.4

但是在动画结束时,目标视图只是坚持最终的约束,而不做反弹效果。

我也试过motion:motionInterpolator="cubic-bezier(.81,.1,.92,1.4)"没有任何成功。

有谁知道我如何使用 MotionLayout 实现这一目标?感谢您提供任何线索。

这是我正在使用的版本:

implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

标签: androidandroid-motionlayout

解决方案


CL 2.0 不支持过冲插值(技术外推)。所以输出的上限是 0 到 1。

2.1 确实支持插值。所以这将在 2.1 中工作(目前在 alpha 中)


推荐阅读