嵌套集的顺序动画

Sequential animation of nested sets

我目前正在制作 Android 闪屏动画。 Google 的 documentation for animation resources 声明 <set> 具有属性 android:ordering,即 "specifies the play ordering of animations in this set"。有两个(不言自明的)选项:

下面的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>

查看动画集上没有ordering属性。

我认为你在混淆 property animation (defined as res/animator/... resources) and view animation(在 res/anim/... 中)。

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

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

并创建一个 AnimatorSet

而对于 观看动画,它是:

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

这会创建一个 AnimationSet