嵌套集的顺序动画

时间:2018-09-19 11:15:49

标签: android android-animation

我目前正在制作Android启动画面动画。 Google的documentation for animation resources指出<set>具有属性android:ordering,该属性“指定该组动画的播放顺序” 。有两个(不言自明的)选项:

  • sequentially
  • together(默认)

下面的animation.xml显示了一个小的实现,但是它的执行方式与我预期的不同。尽管我为它们的父级定义了android:ordering="sequentially",但是所有嵌套集都同时执行。我希望只有每个嵌套集的内容才能显示为相似。父集的排序属性不会影响嵌套集吗?

我知道this answer中提出的解决方案,但是我看不出我对动画顺序执行的定义不能同样有效的原因。

animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially">
    <set>
        <alpha
            android:duration="400"
            android:fromAlpha="0"
            android:interpolator="@anim/interpolator"
            android:toAlpha="0.4" />
        <scale
            android:duration="400"
            android:fromXScale="0"
            android:fromYScale="0"
            android:interpolator="@anim/interpolator"
            android:pivotX="30%"
            android:pivotY="50%"
            android:toXScale="0.4"
            android:toYScale="0.4" />
    </set>
    <set>
        <alpha
            android:duration="200"
            android:fromAlpha="0.4"
            android:toAlpha="0.3" />
        <scale
            android:duration="200"
            android:fromXScale="0.4"
            android:fromYScale="0.4"
            android:pivotX="30%"
            android:pivotY="50%"
            android:toXScale="0.3"
            android:toYScale="0.3" />
    </set>
</set>

1 个答案:

答案 0 :(得分:1)

视图动画集上没有ordering属性。

我认为您在混淆property animation(定义为res/animator/...资源)和view animation(在res/anim/...中)。

两者都可以具有<set>元素,但是语法不同。对于属性动画,它是:

<set
  android:ordering=["together" | "sequentially"]>
...

并创建一个AnimatorSet

观看动画时,它是:

<set
    android:interpolator="@[package:]anim/interpolator_resource"
    android:shareInterpolator=["true" | "false"] >
...

这将创建一个AnimationSet