如何在不使用计时器的情况下在一段时间后重复播放此动画

时间:2015-07-10 22:05:48

标签: android android-animation

我希望这个动画在30秒后重复。我可以使用计时器并每隔30秒将动画应用到视图中,但我想知道是否可以在xml中执行它而不必使用计时器

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >
    <!-- contract -->
    <scale

        android:duration="400"
        android:fillAfter="false"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.5"
        android:toYScale="1.5" />

    <set android:interpolator="@android:anim/decelerate_interpolator" >
        <!-- expand -->
        <scale
            android:duration="400"
            android:fillBefore="false"
            android:fromXScale="1.2"
            android:fromYScale="1.2"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="400"
            android:toXScale="0.8"
            android:toYScale="0.8" />
        <!-- spin -->
        <rotate
            android:duration="400"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="700"
            android:toDegrees="360"
            android:toYScale="0.0" />
    </set>

    <!-- wobble -->
    <set
        android:fillAfter="true"
        android:interpolator="@android:anim/linear_interpolator" >
        <rotate
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="200"
            android:fromDegrees="0"
            android:pivotX="10%"
            android:pivotY="50%"
            android:repeatCount="30"
            android:repeatMode="reverse"
            android:toDegrees="5" />
    </set>

</set>

1 个答案:

答案 0 :(得分:0)

据我所知,在xml中无法做到这一点。此外,您不应该使用计时器,因为它在后台线程中运行代码。你需要的是android native

Handler#postDelayed()

并且不要忘记清除动画。