作为一个业余项目,我正在使用 jetpack compose 制作一个小型 Android 应用程序。我想根据预设的数学函数对图像的偏移进行动画处理,让我们以
f(x) = exp(x)
和 f(x) = \sin(x)
作为基本示例。我就是不知道该怎么做!本质上我想构建自己的动画规范...有人可以提供一个基本示例供我查看吗?
一种明显的方法是线性地对浮点值进行动画处理,然后定义一个新状态作为该浮点的函数。但这意味着计算每一帧的值 - 我不知道这是否是最好的方法。你觉得怎么样?
[动画文档的 api 太重了 - 如果您想要弹簧或补间动画规范,那么它很棒,但如果您想要除此之外的东西,则不清楚该怎么做。我开始查看源代码,但它非常复杂,我仍然不清楚如何处理我的非常简单的问题......]
您可以创建自定义缓动并将其与补间一起使用,如下所示:
val myCustomEasing = Easing { x ->
return@Easing when (x) {
0f -> 0f
1f -> 1f
else -> exp(x) // your custom mathematical function
}
}
val offsetY: Float by animateFloatAsState(
targetValue = if (visible) 0f else 150f,
animationSpec = tween(durationMillis = 1000, easing = myCustomEasing), label = ""
)