首页 > 解决方案 > 有没有办法对动画进行参数化?

问题描述

我创建了一个简单的动画来使视图反复上下移动:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromYDelta="0"
        android:toYDelta="???"
        android:duration="1000"
        android:repeatCount="1000000"
        android:repeatMode="reverse"/>
</set>

我正在为此使用动画资源,就像文档中建议的那样。但是,在编译时我不知道视图应该走多远(toYDelta),因为它取决于设备屏幕。

有没有办法以某种方式对其进行参数化,如果没有,有什么方法可以绕过它?

标签: androidxmlanimation

解决方案


您可以像在 Kotlin 中那样以编程方式实现相同的动画:

val bounceAnimation = TranslateAnimation(0f, 0f, fromYDelta, toYDelta).apply {
    duration = 1000
    repeatCount = 1000000
    repeatMode = Animation.REVERSE
    interpolator = AccelerateDecelerateInterpolator()
}

view.startAnimation(bounceAnimation)

推荐阅读