有没有一种参数化动画的方法?

时间:2019-04-02 20:53:19

标签: android xml animation

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

<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),因为它取决于设备屏幕。

是否有某种方法可以对参数进行参数化?如果没有,那将是什么方法呢?

3 个答案:

答案 0 :(得分:1)

您可以通过编程方式实现与Kotlin中相同的动画:

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

view.startAnimation(bounceAnimation)

答案 1 :(得分:1)

您可以将这些值表示为百分比,例如。 :“ 20%p”是父级的20%

查看更多信息 https://developer.android.com/guide/topics/resources/animation-resource

答案 2 :(得分:1)

文档显示here

  

垂直和/或水平运动。支持以下三种格式之一的以下属性:-100到100的值以“%”结尾,表示相对于自身的百分比;值从-100到100,以“%p”结尾,表示相对于其父级的百分比;不带后缀的浮点值,表示绝对值。表示TranslateAnimation。

%p将帮助您完成所需的工作。