1. ホーム
  2. android

[解決済み] Androidで他のアクティビティを呼び出すときにアニメーションを表示させるには?

2022-05-17 09:46:32

質問

アクティビティAとBがありますが、アクティビティAがBを呼び出したときは縮小アニメーション、アクティビティBがAを呼び出したときは最大化アニメーションにしたいです。 アクティビティAがBを呼び出したときに縮小アニメーションを、アクティビティBがAを呼び出したときに最大化アニメーションを表示させたいと思っています。

Androidで他のアクティビティを呼び出すと、デフォルトのアニメーションが表示され、その後、縮小アニメーションが呼び出されます。

デフォルトのアニメーションが発生せず、希望のアニメーションが発生するようにしたいのですが。

他のActivityを呼び出す際に、実際にアニメーションをさせることは可能でしょうか?

どのように解決するのですか?

API 16 以降では、アクティビティオプションバンドルで Context.startActivity(Intent,Bundle)を呼び出す際に、アクティビティオプションのバンドルを指定することができます。 または関連するメソッドを呼び出す際に、アクティビティオプションバンドルを提供できます。このバンドルは アクティビティオプション ビルダーによって作成されます。

Intent myIntent = new Intent(context, MyActivity.class);
ActivityOptions options = 
   ActivityOptions.makeCustomAnimation(context, R.anim.fade_in, R.anim.fade_out);
context.startActivity(myIntent, options.toBundle());

ActivityOptionsビルダーの他のメソッドをチェックすることを忘れないでください。 ActivityOptionsCompat をチェックすることを忘れないでください。




API 5+ です。

APIレベル5+をターゲットとするアプリには、アクティビティがあります。 overridePendingTransition メソッドがあります。このメソッドは、受信用と送信用の2つのリソースIDを受け取ります。IDは 0 を指定すると、アニメーションは無効になります。の直後にこれを呼び出します。 startActivity の呼び出しの直後に呼び出します。

すなわち

startActivity(new Intent(this, MyActivity.class));
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);


API 3+ です。

デフォルトのアニメーション(右からスライドしてくる)は Intent.FLAG_ACTIVITY_NO_ANIMATION フラグを指定します。

すなわち

Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(myIntent);

であれば、Activityで独自のアニメーションを指定すればよいことになります。

これは1.5 API (Level 3)でも有効です。