2013-03-14 182 views
0

由于我的应用程序设计的某些功能,我需要在onBackPressed事件上开始新的活动。如何在onActivityStart和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和其他)?

回答

0
@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); 
}