再次调用onCreate时,Android动画无法启动

时间:2012-11-21 14:56:40

标签: android animation

我有一个应用程序,当开发选项不保持活动开启时工作正常。

虽然什么时候关闭,

每次应用程序进入后台并恢复时,都会再次调用onCreate函数。 在那里,我重新创建了最后一个应用程序状态。

现在的问题是,用户操作时发生的简单动画无法启动,动画处理程序也从未调用过。

似乎忽略了动画。这只有在活动被杀死并再次创建时才会发生。

最奇怪的部分是我有4个动画,2个用于一个图像视图(打开,关闭),2个用于另一个图像视图(打开,关闭)。

这一切都发生在开场动画上。

你可以帮帮我吗?

动画xmls(用于其中一个开场/结束动画)

redShow动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:interpolator="@android:anim/linear_interpolator">
  <alpha
      android:fromAlpha="0.1"
      android:toAlpha="1.0"
      android:duration="800"
      /> 
  <scale android:fromXScale="0.0"
      android:toXScale="1.0"
      android:fromYScale="0.0"
      android:toYScale="1.0"
      android:pivotX="50%"
      android:pivotY="50%"
      android:duration="800">

  </scale>
</set>

redHide动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:interpolator="@android:anim/linear_interpolator">
  <alpha
      android:fromAlpha="1.0"
      android:toAlpha="0.0"
      android:duration="300"
      />
  <scale android:fromXScale="1.0"
      android:toXScale="0.0"
      android:fromYScale="1.0"
      android:toYScale="0.0"
      android:pivotX="50%"
      android:pivotY="50%"
      android:duration="300">

  </scale>
</set>

我在初始化内容的代码(在onCreate上)

red = (ImageView) findViewById(R.id.red);

redHide = AnimationUtils.loadAnimation(this, R.anim.red_hide);
redHide.setFillAfter(true);
redHide.setAnimationListener(this);

redShow = AnimationUtils.loadAnimation(this, R.anim.red_show);          
redShow.setFillAfter(true);
redShow.setAnimationListener(this);

处理程序和我正在调用的方法

private void showRed() {
    red.startAnimation(redShow); //this is the one that is not happening
}

private void hideRed() {
     red.startAnimation(redHide);
}

@Override
public void onAnimationEnd(Animation a) {   
}

@Override
public void onAnimationRepeat(Animation a) {
}

@Override
public void onAnimationStart(Animation a) {
}

G

1 个答案:

答案 0 :(得分:4)

你可以尝试的事情是:

  • 在onResume()中初始化动画。
  • 在开始每个动画之前调用clearAnimation()。
  • 尝试在没有fillAfter()的情况下制作动画,也许动画已经以某种方式被锁定到它的最新状态。

只是一些想法..

当你写下你正在重新创建最后一个应用程序状态时,一个闪烁的红色警告灯熄灭,因为你向我们展示的代码看起来很好。