Help us understand the problem. What is going on with this article?

FLAG_ACTIVITY_REORDER_TO_FRONTで画面遷移するときのアニメーションを変更する

More than 3 years have passed since last update.

過去に自分のブログに書いたものをQiitaにも転載。


アクティビティを遷移する際のアニメーションを変更する場合は、startActivityの後にoverridePendingTransitionを呼ぶのが普通だと思いますが、インテントのフラグにFLAG_ACTIVITY_REORDER_TO_FRONTが設定されていると指定したアニメーションが適用されません。

Intent intent = new Intent(this, SampleActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
getActivity().overridePendingTransition(0, 0);

解決策はいつものようにStack Overflowで見つけましたが、備忘録として記録しておきます。

android - overridePendingTransition does not work when flag_activity_reorder_to_front is used - Stack Overflow

解決方法

FLAG_ACTIVITY_REORDER_TO_FRONTで既存のアクティビティを前面に移動させる場合には、呼び出された側のアクティビティのonNewIntentoverridePendingTransitionを実行する。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    // FLAG_ACTIVITY_REORDER_TO_FRONTでActivityを起動した場合に
    // 起動元のoverridePendingTransitionが有効に機能しないため
    // インテントで起動時に呼び出すようにする
    overridePendingTransition(R.anim.transition_to_right, R.anim.transition_to_left);
}

onResumeで実行しても同じ動きになるけど、onResumeはいろいろなタイミングで呼ばれるのでおすすめしないよとのこと。

onNewIntentで実行すれば、インテントの内容でアニメーションを制御することもできるのでこちらでやるべきでしょう。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away