我正在尝试实现一个快速的 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/