撰写简单的动画

时间:2015-03-09 15:18:43

标签: android xml animation android-animation

我需要你的帮助才能理解如何管理Android中一些简单动画构建的复杂动画:我有这个动画xml文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- A: executed only one time at the beginning -->
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="3000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0.2"
        android:toYScale="0.2" />

    <!-- B: executed only one time AFTER A -->
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="300"
        android:fromXScale="0.2"
        android:fromYScale="0.2"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1"
        android:toYScale="1" />

    <!-- C: Executed 5 times after B -->
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="300"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="5"
        android:repeatMode="reverse"
        android:toXScale="0.8"
        android:toYScale="0.8" />

    <!-- AT THE END REPEAT ALL FROM THE A TO C -->
</set>

我在文件中放了一些简单的缩放动画,正如你可以从评论中读到的那样,我想创建这个(无限的)序列:

A-B-C-C-C-C-A-B-C-C-C-C-A-B-C-C-C-C-C等...

我如何达到目标?我的问题是两个:首先是规模动画顺序不遵循(似乎所有的动画一起开始)。然后,我怎样才能永远重复所有序列?谢谢。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题。最好的办法是用代码而不是XML来做事情。因此,您为每个动画设置动画侦听器,并在AnimationEnd上控制是否要重复或触发下一个动画

答案 1 :(得分:0)

您可以使用“startOffset”来启动延迟动画:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- A: executed only one time at the beginning -->
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="3000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0.2"
        android:toYScale="0.2" />

    <!-- B: executed only one time AFTER A -->
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:startOffset="3000"
        android:duration="300"
        android:fromXScale="0.2"
        android:fromYScale="0.2"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1"
        android:toYScale="1" />

    <!-- C: Executed 5 times after B -->
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:startOffset="3300"
        android:duration="300"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="5"
        android:repeatMode="reverse"
        android:toXScale="0.8"
        android:toYScale="0.8" />

    <!-- AT THE END REPEAT ALL FROM THE A TO C -->
</set>

由于无法在动画集上设置repeatCount,因此必须以编程方式重复动画。