アプリに複数の異なるアクティビティがあり、アクティビティ間で変更するときに遷移アニメーションが必要ありません。以下は、アクティビティ間でどのように変更するかです。
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);
これは、新しいアクティビティを初めて開始するときにうまく機能します。アニメーションはありませんが、すでに開始されているアクティビティに戻ると、「Intent.FLAG_ACTIVITY_NO_ANIMATION」が無視され、デフォルトのアニメーションが表示されるようです。
なぜこれが起こっているのか理解できないようです。
overridePendingTransition()
を試しましたか?
FLAG_ACTIVITY_REORDER_TO_FRONTはコードで設定でき、FLAG_ACTIVITY_NO_ANIMATIONはマニフェストで次のように設定できます。
Res/values /styles.xmlにnoAnimThemeを作成します
<style name="noAnimTheme" parent="Android:Theme">
<item name="Android:windowAnimationStyle">@null</item>
</style>
または
<style name="noAnimTheme" parent="Android:Theme.NoTitleBar">
<item name="Android:windowAnimationStyle">@null</item>
</style>
マニフェストで使用します。
<activity Android:name="SecondActivity" Android:theme="@style/noAnimTheme"/>
お役に立てば幸いです
メニューをクリックしてアクティビティを作成する必要があったため、これが必要でした。
私は次のことをしました:
インテントにFLAG_ACTIVITY_NO_ANIMATION
フラグを追加しました。初めてアクティビティを作成しているときにアニメーションを停止しました。
ただし、同じメニューをもう一度クリックしたときに呼び出されたスタック内のアクティビティ(おそらく別のアクティビティから)には、アニメーションがありました。
そこで、FLAG_ACTIVITY_NO_HISTORY
を追加して、新しいアクティビティを開始したときにアクティビティをクリアするか、終了しました。これにより、メニューをもう一度クリックすると、新しいアクティビティ(アニメーションなし)が作成されました。
2番目のインテントを作成した後にこれを追加します
Intent i = new Intent(SecondActivity.this, FirstActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);
最初の意図に戻ると、アニメーションは無効になっていますが、私のために働いています
FLAG_ACTIVITY_REORDER_TO_FRONTを使用している場合は、後でstartActivityを呼び出すためにonNewIntentをオーバーライドすることもできます。これは、最初の呼び出しではなく、最前線の状態にするために機能します。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
overridePendingTransition(R.anim.whatever, R.anim.whatever);
}
もちろん、これをターゲットアクティビティに実装する必要があります。