0

私のアプリケーションの設計のいくつかの機能により、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およびその他) を取得するにはどうすればよいですか?

4

1 に答える 1

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);
}
于 2013-03-18T09:20:36.823 に答える