web-dev-qa-db-ja.com

アニメーションなしでアクティビティを切り替える

AndroidManifestファイルでIntentフラグFLAG_ACTIVITY_NO_ANIMATIONを適切に使用するにはどうすればよいですか?私の問題は些細なことだと思いますが、良い例や解決策を見つけることができません。

<intent-filter>
    <data Android:name="Android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION" />
</intent-filter>

ただし、コンパイラによってエラーは報告されませんが、dataは正しくありません。アクティビティを切り替える場合に備えて、アニメーションを無効にします。むしろ、onCreateまたはonResumeでgetWindow().setWindowAnimations(0);を使用できますが、フラグを使用する方が良い方法ではありませんか?

コードでも使用できます:

Intent intent = new Intent(v.getContext(), newactivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);

しかし、Androidマニフェストでこのフラグを使用したいと思います。 2番目のアクティビティから最初のアクティビティに戻る場合にもアニメーションを無効にします。

151
woyaru

スタイルを作成できます

 <style name="noAnimTheme" parent="Android:Theme">
   <item name="Android:windowAnimationStyle">@null</item>
</style>

マニフェストでアクティビティのテーマとして設定します。

   <activity Android:name=".ui.ArticlesActivity" Android:theme="@style/noAnimTheme">
    </activity>

また、スタイルを定義して、カスタムエントリおよび終了アニメーションを指定することもできます。 http://developer.Android.com/reference/Android/R.attr.html#windowEnterAnimation

248
Santosh

コンテキストがアクティビティの場合、overridePendingTransitionを呼び出すことができます。

StartActivity(Intent)のいずれかのフレーバーの直後に呼び出すか、終了して、次に実行する明示的な遷移アニメーションを指定します。

だから、プログラムで:

this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
173
eshirazi

このコードを試して、

this.startActivity(new Intent(v.getContext(), newactivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
34

移行したくないすべてのアクティビティでこれを行うこともできます:

@Override
public void onPause() {
    super.onPause();
    overridePendingTransition(0, 0);
}

アクティビティのスタイルをいじる必要がないため、このアプローチが気に入っています。

23
TastyLemons

これは使用例やFLAG_ACTIVITY_NO_ANIMATIONの使用方法の説明ではありませんが、質問タイトルで尋ねられているように、Activity切り替えアニメーションを無効にする方法に答えます。

Android、新しいアクティビティを開始するときに「ワイプ」効果を無効にする方法

5
Phil

以下は、minSdkVersion 14に挿入する必要があるres/styles.xmlの低さで機能するワンライナーソリューションです。

<item name="Android:windowAnimationStyle">@null</item>

そのようです:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        ...
        <item name="Android:windowAnimationStyle">@null</item>
    </style>
    ...
</resources>

乾杯!

2
user1506104

android:Themeをオーバーライドする独自のスタイルを作成する

<style name="noAnimationStyle" parent="Android:Theme">
    <item name="Android:windowAnimationStyle">@null</item>
</style>

次に、マニフェストで次のように使用します。

<activity Android:name=".MainActivity"
    Android:theme="@style/noAnimationStyle">
</activity>
1
goyo

テーマスタイルの行は正常に機能しますが、アニメーションは白い画面に置き換えられます。特に遅い電話で-それは本当に迷惑です。したがって、すぐに移行したい場合は、これをテーマスタイルで使用できます。

<item name="Android:windowAnimationStyle">@null</item>
<item name="Android:windowDisablePreview">true</item>
0