Android动画不重复该怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

我试图制作简单的动画,可以重复几次(或无限次)。 这似乎android:repeatCount不起作用! 这里是我的动画资源来自/res/anim/first_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false"
    android:repeatCount="infinite"
    >
    <scale
        android:interpolator="@android:anim/decelerate_interpolator"
        android:duration="500"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="1.2"
        android:toYScale="1.2"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false" />
    <scale
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="500"
        android:duration="500"
        android:fromXScale="1.2"
        android:fromYScale="1.2"
        android:toXScale="1.0"
        android:toYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false" />
</set>

首先它应该在500毫秒内将图像从1.0缩放到1.2尺寸。 然后在500毫秒内将其缩小到1.0。 以下是我如何使用它:

Animation firstAnimation = AnimationUtils.loadAnimation(this, R.anim.first_animation);
imgView.startAnimation(firstAnimation);

它使一个周期,然后完成。 它放大,然后缩小然后停止。 我如何按预期做好这项工作?

提问于
用户回答回答于

为了扩展帕维尔和其他人的答案:确实,<set>标签是可笑的越野车。它无法正确处理repeatCount和其他一些属性。

我花了几个小时弄清楚它能做什么,不能处理什这里提交了一个错误报告/问题:

总之(这涉及到AnimationSets):

setRepeatCount()/ android:repeatCount 该属性(以及repeatMode)在代码或XML中不起作用。这使重复一整套动画变得困难。 setDuration()/ android:duration 在代码WORKS中的AnimationSet上设置此属性(覆盖儿童动画的所有持续时间),但不包括在XML中包含在标记中时 setFillAfter()/ android:fillAfter 这适用于标记的代码和XML。奇怪的是,我已经得到它也没有需要将fillEnabled设置为true的工作。 setFillBefore()/ android:fillBefore 似乎在代码和XML中都没有效果/被忽略 setFillEnabled()/ android:fillEnabled 似乎在代码和XML中都没有效果/被忽略。即使不包含fillEnabled或将fillEnabled设置为false,我仍然可以获取fillAfter工作。 setStartOffset()/ android:startOffset 这只适用于代码而不适用于XML。

用户回答回答于

我发现<set>标签在类AnimationSet中有错误的实现。 它无法正确处理repeatCount。 我们可以做的是直接在<scale>标签中设置repeatCount。 这个XML资源运行良好:

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:duration="200"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="1.05"
    android:toYScale="1.05"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatMode="reverse"
    android:fillAfter="false"
    android:repeatCount="24"
/>

扫码关注云+社区