我制作了一个三个ObjectAnimator的AnimatorSet,我想重复一遍。
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially">
<objectAnimator
android:propertyName="rotation"
android:duration="300"
android:valueFrom="0"
android:valueTo="5"
android:valueType="floatType"/>
<objectAnimator
android:propertyName="rotation"
android:duration="600"
android:valueFrom="5"
android:valueTo="-5"
android:valueType="floatType"/>
<objectAnimator
android:propertyName="rotation"
android:duration="300"
android:valueFrom="-5"
android:valueTo="0"
android:valueType="floatType"/>
</set>
但是如果我将CycleInterpolator设置为AnimatorSet,因为动画师将会连续启动
public void setInterpolator(TimeInterpolator interpolator) 在API级别11中添加
为此AnimatorSet的所有当前子动画设置TimeInterpolator。
所以我尝试通过设置一个监听器来重新启动AnimatorSet来循环,但它停止了几毫秒,并且重启AnimatorSet的效果很明显。
a.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation)
{
animation.start();
}
});
我可以做什么来循环它(除了构建一个巨大的ObjectAnimator列表或使用Thread和Handler编写我自己的动画)?
答案 0 :(得分:6)
在迫切需要这个功能的情况下,已经找到了一些解决方案。
http://www.jefflinwood.com/2013/04/repeating-android-animations-with-animatorset/
所有赠送金额均归原作者所有。
mAnimationSet.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
mAnimationSet.start();
}
});
mAnimationSet.start();
答案 1 :(得分:4)
这个特殊情况的解决方法是创建一个AnimatorSet,第一个项目旋转一半,第二个项目旋转
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially">
<objectAnimator
android:propertyName="rotation"
android:duration="150"
android:valueFrom="0"
android:valueTo="-5"
android:valueType="floatType"/>
<objectAnimator
android:propertyName="rotation"
android:duration="300"
android:valueFrom="-5"
android:valueTo="5"
android:repeatMode="reverse"
android:repeatCount="infinite"
android:valueType="floatType"/>
</set>
答案 2 :(得分:-1)
请它重复一遍:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially"
android:repeatMode="reverse"
android:repeatCount="infinite">
=)
count也可以是定义的数字。
答案 3 :(得分:-1)
您需要为AnimationSet设置重复模式,请参阅:
http://developer.android.com/reference/android/view/animation/Animation.html#attr_android:repeatMode