在运行时将贝塞尔曲线应用于 MotionLayout

Apply bezier curve to MotionLayout at runtime

我已经使用 this article 创建了一个 expand/collapse cardview 组件。现在,expand/collapse 动画是线性的。我想对动画应用贝塞尔曲线,这样动画就会 ease-in-out。我在谷歌上搜索了很多,但找不到如何在运行时动态添加它。我已经看到它从 MotionScene xml 文件中应用。但是找不到在运行时执行此操作的任何 material。请让我知道如何在运行时添加它。 非常感谢。

Transition 有一个方法 setInterpolatorInfo 所以在你引用的文章中 他们在哪里输入 transaction.duration = 1000 您应该能够添加以下内容之一。

 val INTERPOLATOR_REFERENCE_ID = -2
 val SPLINE_STRING = -1
 val EASE_IN_OUT = 0;
 val EASE_IN = 1;
 val EASE_OUT = 2;
 val LINEAR = 3;
 val BOUNCE = 4;
 val OVERSHOOT = 5;
 val ANTICIPATE = 6;
 
 //Android Custom Interpolators 
 transaction.setInterpolatorInfo(INTERPOLATOR_REFERENCE_ID , null, R.interpolator.???? )
 // css style string   
 transaction.setInterpolatorInfo(SPLINE_STRING , "cubic(0,0,0,1.0)", 0 )
 // pre baked 
 transaction.setInterpolatorInfo( OVERSHOOT , null, 0 )