我想让一个动画在另一个动画结束后开始。我使用了animation属性,并将对象定义为"AnimatorSet"。问题是第一个动画没有问题地开始了,但第二个动画从未开始。
public void moveGround() {
ImageView ground = (ImageView) findViewById(R.id.ground);
ImageView ground2 = (ImageView) findViewById(R.id.ground2);
final AnimatorSet moveGround = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.ground_move);
final Animator moveGround2 = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.ground_move2);
moveGround2.setTarget(ground2);
moveGround.setTarget(ground);
moveGround.start();
moveGround.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
moveGround2.start();
}
});
}
编辑:我也尝试在动画监听器结束后启动第一个动画:结果相同。
编辑2:XML文件
ground_move.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:ordering="sequentially" >
<objectAnimator
android:duration="2000"
android:propertyName="x"
android:repeatCount="infinite"
android:repeatMode="restart"
android:valueFrom="2000"
android:valueTo="-2000"
android:valueType="floatType"
/>
</set>
ground_move2.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:ordering="sequentially" >
<objectAnimator
android:duration="2000"
android:propertyName="x"
android:repeatCount="infinite"
android:repeatMode="restart"
android:valueFrom="2000"
android:valueTo="-2000"
android:valueType="floatType" />
</set>
onAnimationCancel(),onAnimationPause(),onAnimationRepeat(),onAnimationResume()
),打印日志,可能在其他地方被暂停了。 - Alex S. Diaz