Activityのアニメーションの制御
ひとつのActivityから複数のActivityを順番に呼び出すとき。
- A から B を呼び出す
- B が結果を返す
- A から C を呼び出す
- C でBACKが押された
- A から B を再び呼び出す
今作ってるアプリで、5 番目の画面遷移が Close ではなく Open のアニメーションになってしまい(戻る操作なのに進むアニメーションになってしまう)、すごく違和感があって気になっていたんだけど、回避方法があるんですな。
Android 2.1 から利用可能。
こんな感じで使ってみた。
static void setActivityAnimation(Activity activity, boolean forward) { if (!forward) { Theme theme = activity.getTheme(); TypedValue tv = new TypedValue(); theme.resolveAttribute(android.R.attr.windowAnimationStyle, tv, true); TypedArray ta = theme.obtainStyledAttributes(tv.resourceId, new int [] { android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation, }); int enterAnim = ta.getResourceId(0, 0); int exitAnim = ta.getResourceId(1, 0); ta.recycle(); activity.overridePendingTransition(enterAnim, exitAnim); } }
1つ前の画面を呼び出すときに、戻ってるアニメーションになり違和感が無くなった。