当我单击“开始”按钮,然后单击“结束”按钮,然后再次单击“开始”按钮,将导致以下异常:
10-08 08:57:57.963: E/AndroidRuntime(2009): java.lang.IllegalStateException: Circular dependencies cannot exist in AnimatorSet
10-08 08:57:57.963: E/AndroidRuntime(2009): at android.animation.AnimatorSet.sortNodes(AnimatorSet.java:848)
10-08 08:57:57.963: E/AndroidRuntime(2009): at android.animation.AnimatorSet.start(AnimatorSet.java:486)
10-08 08:57:57.963: E/AndroidRuntime(2009): at com.example.propertyanimation.IndividualPropertyAnimationActivity$1.onClick(IndividualPropertyAnimationActivity.java:51)
10-08 08:57:57.963: E/AndroidRuntime(2009): at android.view.View.performClick(View.java:4240)源代码:
pvhX = PropertyValuesHolder.ofFloat(View.SCALE_X, 2);
pvhY = PropertyValuesHolder.ofFloat(View.SCALE_Y, 2);
scaleAnimation = ObjectAnimator.ofPropertyValuesHolder(mSubject, pvhX, pvhY);
scaleAnimation.setRepeatCount(0);
scaleAnimation.setRepeatMode(ValueAnimator.REVERSE);
scaleAnimation.setDuration(3000);
rotateAnimation = ObjectAnimator.ofFloat(mSubject, View.ROTATION, 360);
rotateAnimation.setRepeatCount(ValueAnimator.INFINITE);
rotateAnimation.setDuration(2000);
mButtonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setAniation.play(scaleAnimation).before(rotateAnimation);
setAniation.start();
}
});
mButtonEnd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setAniation.end();
}
});发布于 2013-12-17 19:46:37
不要重用AnimatorSet,创建一个新的,它会没事的。构建器正在积累值,因此创建了一个循环(取决于自己在“前面”中的动画)。
发布于 2018-03-05 13:42:59
对我来说,问题是因为我错误地重复了两次相同的动画
final AnimatorSet set = new AnimatorSet();
set.setDuration(250);
set.setInterpolator(new AnticipateOvershootInterpolator());
set.playTogether(galleryScaleX, galleryScaleY
, cameraScaleX, cameraScaleY
, audioScaleX, audioScaleY
, documentScaleX, documentScaleY
, locationScaleX, locationScaleY
,audioScaleX,audioScaleY/* same animation here*/
, contactScaleX, contactScaleY);
set.start();只要确保你的不要重复相同的动画
https://stackoverflow.com/questions/19248754
复制相似问题