android - overridePendingTransition() 不工作

标签 android animation android-activity fragment

我正在尝试实现一个快速的 SplashActivity,它从右向左滑入,然后随着 MainActivity 向右滑入而向左滑出。目前,动画 XML 已经到位,但它不起作用,启动画面刚刚出现,然后到主要 Activity 的过渡也不起作用。这是应用程序的开始 Activity SplashActivity。

public class SplashActivity extends Activity{

    private int SPLASH_MILLISECONDS = 1000;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
        setContentView(R.layout.activity_splash);
        runTimer();
    }

    private void runTimer() {
        Timer timeout = new Timer();
        timeout.schedule(new TimerTask()
        {
            @Override
            public void run() 
            {                       
                runOnUiThread(new Runnable(){
                    @Override
                    public void run() {
                        goToMainActivity();
                    }
                });
            }                           
        }, SPLASH_MILLISECONDS);
    }

    private void goToMainActivity(){
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION );
        startActivity(intent);
        finish();
        overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);    
    }
}

由于某种原因这不起作用,我做错了什么?

编辑:这是我的新 goToMainActivity() 方法,但 2 个动画仍然无效。此时我不太关心第一个动画是否正常工作,我只希望第二个动画正常工作。

private void goToMainActivity(){
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);    
        finish();
    }

最佳答案

我通常从正在启动的 Activity 的 onCreate() 函数中覆盖动画,这似乎运作良好。调用者通常应该只是startActivity();不要使用 overridePendingTransition()FLAG_ACTIVITY_NO_ANIMATION 或其他任何东西。

从实际部署的代码中复制粘贴:

@Override public void onCreate(Bundle savedState)
{
    overridePendingTransition(R.anim.anim_slideup, R.anim.anim_hold);
    super.onCreate(savedState);

正如其他人提到的,当您覆盖 Activity 开始时的动画时,您还应该覆盖 Activity 结束时与之匹配的动画。

@Override public void finish()
{
    super.finish();
    overridePendingTransition(R.anim.anim_hold, R.anim.anim_slidedown);
}

关于android - overridePendingTransition() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24461683/

相关文章:

html - CSS 动画适用于 Chrome 但不适用于 Safari

android - Fragment 和父 Activity 一起生命周期

android - onCreate() 和 onStart() 的区别?

java - 输入流和 SAXParser 的问题

android - Gradle 同步失败 : CreateProcess error=216

ios - 自定义iOS导航 Controller 动画: is this wrong?

android - 如何手动调用 onSaveInstanceState()

android - 在哪里存储字符串值?在 strings.xml 中还是在常量类中?

android - 现有 gradle 项目中的 Git 子模块

ios - UIView block 动画: how to put view back in initial state without a strange effect?