Android 编写自定义函数给出的动画

问题描述 投票:0回答:1

作为一个业余项目,我正在使用 jetpack compose 制作一个小型 Android 应用程序。我想根据预设的数学函数对图像的偏移进行动画处理,让我们以

f(x) = exp(x)
f(x) = \sin(x)
作为基本示例。我就是不知道该怎么做!本质上我想构建自己的动画规范...有人可以提供一个基本示例供我查看吗?

一种明显的方法是线性地对浮点值进行动画处理,然后定义一个新状态作为该浮点的函数。但这意味着计算每一帧的值 - 我不知道这是否是最好的方法。你觉得怎么样?

[动画文档的 api 太重了 - 如果您想要弹簧或补间动画规范,那么它很棒,但如果您想要除此之外的东西,则不清楚该怎么做。我开始查看源代码,但它非常复杂,我仍然不清楚如何处理我的非常简单的问题......]

android android-jetpack-compose android-animation
1个回答
0
投票

您可以创建自定义缓动并将其与补间一起使用,如下所示:

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 = ""
)
© www.soinside.com 2019 - 2024. All rights reserved.