You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MotionLayout中以编程方式设置自定义Interpolator

在MotionLayout中编程设置自定义插值器的方法

当然可以通过代码给MotionLayout设置自定义插值器,核心是操作MotionLayout的Transition实例,以下是两种常用方式:

1. 为整个过渡动画设置自定义插值器

如果希望整个Transition的所有属性动画都使用自定义插值器,可以直接修改Transition的插值器:

val motionLayout = findViewById<MotionLayout>(R.id.your_motion_layout)
// 通过Transition的ID获取目标过渡实例
val targetTransition = motionLayout.getTransition(R.id.your_transition_id)
// 设置自定义弹跳插值器
targetTransition.interpolator = CustomBounceInterpolator()
// 让MotionLayout应用更新后的Transition配置
motionLayout.updateTransition(targetTransition)

2. 为单个属性动画设置自定义插值器

如果只想让某个特定属性(比如translationY、scaleX)的动画使用自定义插值器,可以单独定位到该属性的动画配置:

val motionLayout = findViewById<MotionLayout>(R.id.your_motion_layout)
val targetTransition = motionLayout.getTransition(R.id.your_transition_id)
// 获取目标属性的动画实例(这里以translationY为例)
val attributeAnimation = targetTransition.getAnimation("translationY")
attributeAnimation?.let {
    it.interpolator = CustomBounceInterpolator()
    motionLayout.updateTransition(targetTransition)
}

注意:修改完Transition配置后,必须调用updateTransition()让MotionLayout刷新配置,确保自定义插值器生效。你可以在Activity/Fragment的初始化阶段、或者MotionLayout的onTransitionStarted回调中执行上述代码,保证动画开始前插值器已被设置。

内容的提问来源于stack exchange,提问作者Sca09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:42:36