在 android 播放动画
Playing with animation in android
我正在学习 android 动画并想玩它。
我已经创建了动画,但我希望动画之间应该有 delay/wait。
这是代码。
new AnimationUtils();
Animation anim = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
findViewById(R.id.app_logo).startAnimation(anim);
findViewById(R.id.addTopic).startAnimation(anim);
findViewById(R.id.addDescription).startAnimation(anim);
findViewById(R.id.addBtn).startAnimation(anim);
现在我想要在 findViewById(R.id.app_logo).startAnimation(anim);
之后等待动画完成。一旦完成 findViewById(R.id.addTopic).startAnimation(anim);
应该开始等等。
如果有任何人可以指导我如何实现它,我将不胜感激
谢谢。
这是满足您需求的简单解决方案:
final Animation anim0 = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
final Animation anim1 = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
final Animation anim2 = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
final Animation anim3 = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
Animation.AnimationListener animationListener = new Animation.AnimationListener() {
int count = 0;
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
switch (count){
case 0:
findViewById(R.id.addTopic).setVisibility(View.VISIBLE);
findViewById(R.id.addTopic).startAnimation(anim1);
break;
case 1:
findViewById(R.id.addDescription).setVisibility(View.VISIBLE);
findViewById(R.id.addDescription).startAnimation(anim2);
break;
case 2:
findViewById(R.id.addBtn).setVisibility(View.VISIBLE);
findViewById(R.id.addBtn).startAnimation(anim3);
break;
}
count++;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
};
anim1.setAnimationListener(animationListener);
anim2.setAnimationListener(animationListener);
anim3.setAnimationListener(animationListener);
findViewById(R.id.app_logo).startAnimation(anim0);
findViewById(R.id.addTopic).setVisibility(View.GONE);
findViewById(R.id.addDescription).setVisibility(View.GONE);
findViewById(R.id.addBtn).setVisibility(View.GONE);
这个link会解决你所有的问题
我正在学习 android 动画并想玩它。 我已经创建了动画,但我希望动画之间应该有 delay/wait。
这是代码。
new AnimationUtils();
Animation anim = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
findViewById(R.id.app_logo).startAnimation(anim);
findViewById(R.id.addTopic).startAnimation(anim);
findViewById(R.id.addDescription).startAnimation(anim);
findViewById(R.id.addBtn).startAnimation(anim);
现在我想要在 findViewById(R.id.app_logo).startAnimation(anim);
之后等待动画完成。一旦完成 findViewById(R.id.addTopic).startAnimation(anim);
应该开始等等。
如果有任何人可以指导我如何实现它,我将不胜感激
谢谢。
这是满足您需求的简单解决方案:
final Animation anim0 = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
final Animation anim1 = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
final Animation anim2 = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
final Animation anim3 = AnimationUtils.loadAnimation(this, R.anim.abc_slide_in_bottom);
Animation.AnimationListener animationListener = new Animation.AnimationListener() {
int count = 0;
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
switch (count){
case 0:
findViewById(R.id.addTopic).setVisibility(View.VISIBLE);
findViewById(R.id.addTopic).startAnimation(anim1);
break;
case 1:
findViewById(R.id.addDescription).setVisibility(View.VISIBLE);
findViewById(R.id.addDescription).startAnimation(anim2);
break;
case 2:
findViewById(R.id.addBtn).setVisibility(View.VISIBLE);
findViewById(R.id.addBtn).startAnimation(anim3);
break;
}
count++;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
};
anim1.setAnimationListener(animationListener);
anim2.setAnimationListener(animationListener);
anim3.setAnimationListener(animationListener);
findViewById(R.id.app_logo).startAnimation(anim0);
findViewById(R.id.addTopic).setVisibility(View.GONE);
findViewById(R.id.addDescription).setVisibility(View.GONE);
findViewById(R.id.addBtn).setVisibility(View.GONE);
这个link会解决你所有的问题