如何在onActivityStart和onBackPressed事件之间切换动画?

时间:2013-03-14 14:59:47

标签: android android-animation

由于我的应用程序设计的某些功能,我需要在onBackPressed事件上开始新的活动。

@Override
public void onBackPressed() {
    Intent intent = new Intent(this, SomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

问题是看起来用户在应用程序的深处进行 - 而不是像用户返回。

所以,就这种情况而言,我需要切换动画。我知道overridePendingTransition,但是如何获取系统默认动画(activityCloseEnterAnimation和其他动画)?

1 个答案:

答案 0 :(得分:1)

@Override
public void onBackPressed() {
    TypedArray activityStyle = getTheme().obtainStyledAttributes(new int[] {android.R.attr.windowAnimationStyle});
    int windowAnimationStyleResId = activityStyle.getResourceId(0, 0);
    activityStyle.recycle();

    activityStyle = getTheme().obtainStyledAttributes(windowAnimationStyleResId, new int[] {android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation});
    int activityCloseEnterAnimation = activityStyle.getResourceId(0, 0);
    int activityCloseExitAnimation = activityStyle.getResourceId(1, 0);
    activityStyle.recycle();

    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

    overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation);
}