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番目のアクティビティから最初のアクティビティに戻る場合にもアニメーションを無効にします。
スタイルを作成できます
<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
コンテキストがアクティビティの場合、overridePendingTransitionを呼び出すことができます。
StartActivity(Intent)のいずれかのフレーバーの直後に呼び出すか、終了して、次に実行する明示的な遷移アニメーションを指定します。
だから、プログラムで:
this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
このコードを試して、
this.startActivity(new Intent(v.getContext(), newactivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
移行したくないすべてのアクティビティでこれを行うこともできます:
@Override
public void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
アクティビティのスタイルをいじる必要がないため、このアプローチが気に入っています。
これは使用例やFLAG_ACTIVITY_NO_ANIMATION
の使用方法の説明ではありませんが、質問タイトルで尋ねられているように、Activity
切り替えアニメーションを無効にする方法に答えます。
以下は、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>
乾杯!
android:Themeをオーバーライドする独自のスタイルを作成する
<style name="noAnimationStyle" parent="Android:Theme">
<item name="Android:windowAnimationStyle">@null</item>
</style>
次に、マニフェストで次のように使用します。
<activity Android:name=".MainActivity"
Android:theme="@style/noAnimationStyle">
</activity>
テーマスタイルの行は正常に機能しますが、アニメーションは白い画面に置き換えられます。特に遅い電話で-それは本当に迷惑です。したがって、すぐに移行したい場合は、これをテーマスタイルで使用できます。
<item name="Android:windowAnimationStyle">@null</item>
<item name="Android:windowDisablePreview">true</item>