这是我的情景。
首先,我将动画设置为我的视图(View.startAnimation(animationSet)
),其中animationSet同时包含Translate + Rotate + Scale all。它工作正常。
在那个animationSet上我有fillAfter(true)
。
一段时间后,用户单击一个按钮并onClick我必须在同一个View上启动新的ScaleAnimation。所以,如果我做了类似的事情:
@Override
public void onClick(View v) {
ScaleAnimation scaleAnimation = new ScaleAnimation(mOldScaleFactor, mScaleFactor, mOldScaleFactor, mScaleFactor, mPivotX, mPivotY);
scaleAnimation.setDuration(ANIMATION_DURATION_MILIS);
scaleAnimation.setStartOffset(ANIMATION_OFFSET_MILIS);
scaleAnimation.setFillAfter(true);
v.startAnimation(scaleAnimation);
}
所有上一个动画(翻译+ Rotete +比例)都被遗忘了。
如何从旧动画结束处开始新动画?
答案 0 :(得分:2)
您可以尝试实现一个侦听器,并可能捕获上一个动画停止时的信息,但是我不确定您是否能够查询动画的状态。另一种选择是确保动画停止在已知状态。这样你就可以知道如何开始下一个动画了。
public float param1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
//load text view to add animation
ImageView image1 = (ImageView) findViewById(R.id.splash_imageView1);
Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_anim);
image1.startAnimation(fade1);
fade1.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
//interrogate animation here
}