编写简单的动画
Composing Simple Animations
我需要你的帮助来了解如何管理从 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-C-A-B-C-C-C-C-C-A-B-C-C-C-C-C 等等...
如何联系到我的 objective?我的问题有两个:首先,比例动画的顺序不符合(似乎所有的动画都是一起开始的)。然后,我怎样才能永远重复所有的序列?谢谢你。
您可以使用"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,因此您必须以编程方式重复动画。
我 运行 遇到了类似的问题。最好的办法是用代码而不是 XML 来做事。因此,您为每个动画设置一个动画侦听器,并在 AnimationEnd 上控制是否要重复或触发下一个动画
我需要你的帮助来了解如何管理从 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-C-A-B-C-C-C-C-C-A-B-C-C-C-C-C 等等...
如何联系到我的 objective?我的问题有两个:首先,比例动画的顺序不符合(似乎所有的动画都是一起开始的)。然后,我怎样才能永远重复所有的序列?谢谢你。
您可以使用"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,因此您必须以编程方式重复动画。
我 运行 遇到了类似的问题。最好的办法是用代码而不是 XML 来做事。因此,您为每个动画设置一个动画侦听器,并在 AnimationEnd 上控制是否要重复或触发下一个动画