两个动画之间有1秒的延迟

4
我希望为Android开发一个启动界面,其中logo需要进行两次动画:

  • 从左侧飞到中心
  • 等待1秒后,从中心飞到右侧

第一个动画已经实现成功:

Animation animLeft2Center = AnimationUtils.loadAnimation(this, R.anim.translate_left_to_center);
mLogo.startAnimation(animLeft2Center);

但是第二个动画我无法使其工作。
Animation animCenter2Right = AnimationUtils.loadAnimation(this, R.anim.translate_center_to_right);
mLogo.startAnimation(animCenter2Right);

我该如何在两个动画之间设置1秒的延迟,然后开始第二个动画?

我找不到像setStartDelay这样的东西,也不能让两个动画依次触发。


1
你尝试过在第一个动画中使用AnimationListener,并在第一个动画完成后启动第二个动画(onAnimationEnd)吗?如果你只想使用一个动画,你甚至可以在XML级别上定义一个动画集。 - andrea.petreri
1个回答

4

请尝试用以下方法进行:

Animation animLeft2Center = AnimationUtils.loadAnimation(this, R.anim.translate_left_to_center);

mLogo.startAnimation(animLeft2Center);  
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
    //Do something after 1 second
      Animation animCenter2Right = AnimationUtils.loadAnimation(this, R.anim.translate_center_to_right);
      mLogo.startAnimation(animCenter2Right);
  }
}, 1000);

谢谢!loadAnimation中的“this”怎么处理? - Zoker
你能给我一个简短的例子吗?我对Android很陌生。那太棒了! - Zoker
1
尝试使用 YourActivityName.this。 - Rohit Sharma
您,先生是一个英雄! - Soham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接