【问题标题】:Android : Animation not finishing before starting next activityAndroid:动画在开始下一个活动之前没有完成
【发布时间】:2012-12-30 18:57:14
【问题描述】:

我为图像按钮设置了动画。我期望它做的是淡出,然后开始下一个活动。

这不是正在发生的事情。

它正在启动下一个活动,然后当按下'返回'时,动画仍然'运行',并完成淡出。我尝试了各种组合:在XML中设置更长的动画持续时间,将动画放在线程中,使用线程睡眠,将动画放在睡眠线程中......我没有找到获胜的组合!在下一个活动开始之前仍然没有让动画完成。

感谢任何帮助!

用于淡出的 XML:

<?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.1"
  android:duration="1000"
  />
</set>

android中的代码:(用于imageButton的onClick)

public void onClick(View v) {
            Intent intent = new Intent(Current.this, Next.class);
            v.startAnimation(animationFadeOut);
            try {

                Thread.sleep(1200);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            startActivity(intent);

}

【问题讨论】:

  • 让我帮你说清楚,按下后退按钮不起作用?但是如果你只是点击图片按钮并让它运行,它会起作用吗?
  • 不 - 按下图像按钮时它不起作用,但按下后退按钮时:淡入显示。本质上,动画正在开始,但在下一个活动开始之前并未完成,即使使用线程也是如此。

标签: android animation


【解决方案1】:

您也可以尝试使用 AnimationListener,如下所示:

animationFadeOut.setAnimationListener(new AnimationListener() {

    @Override
    public void onAnimationStart(Animation animation) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationEnd(Animation animation) {
        // TODO Auto-generated method stub

        startActivity(intent);

    }
});

【讨论】:

    【解决方案2】:

    您应该使用AnimationListener 描述的here 并在onAnimationEnd 中启动您的Activity。你可以这样使用:animationFadeOut.setAnimationListener(listener)

    【讨论】:

    • 谢谢你——我知道一定有某种倾听者!
    猜你喜欢
    • 2020-11-10
    • 2014-01-24
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多