ボタンをクリックして別のアクティビティを起動するアクティビティがあります。デフォルトでは、Androidの新しいOSバージョンでは、OSは右から左にスライドする新しいアクティビティをアニメーション化します。
このアニメーションを無効にする方法はありますか?新しいアクティビティをアニメーションなしで表示したいだけです。
ボタンをクリックして別のアクティビティを起動するアクティビティがあります。デフォルトでは、Androidの新しいOSバージョンでは、OSは右から左にスライドする新しいアクティビティをアニメーション化します。
このアニメーションを無効にする方法はありますか?新しいアクティビティをアニメーションなしで表示したいだけです。
回答:
FLAG_ACTIVITY_NO_ANIMATIONフラグが活動を開始するときに、アニメーションを無効にするための罰金に動作します。
finish()アクティビティを呼び出すときにトリガーされる同様のアニメーションを無効にするには、つまり、アニメーションを右から左にスライドさせます。呼び出しoverridePendingTransition(0, 0)後に呼び出すfinish()と、次のアニメーションが除外されます。
これは、を呼び出したoverridePendingTransition(0, 0)後に呼び出す場合、アニメーション内でも機能しますstartActivity(...)。
私のこの答えはここで問題を最もエレガントな方法で解決します。
開発者が作成する必要がありますスタイルを、
<style name="noAnimTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
その後、マニフェストでアクティビティまたはアプリケーション全体のテーマとして設定します。
<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>
出来上がり!素敵で簡単。
原作者へのpsクレジットをお願いします。
申し込む
startActivity(new Intent(FirstActivity.this,SecondActivity.class));
その後
overridePendingTransition(0, 0);
これはアニメーションを停止します。
私の意見では、最良の答えは使用することです "overridePendingTransition(0, 0);"
使用したいときにアニメーションが表示されないようIntentにするにActivityは:
this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
また、[戻る]ボタンのオーバーライドonPauseメソッドを押したときにアニメーションが表示されないようにするnewactivity
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
Intent.FLAG_ACTIVITY_NO_ANIMATION開始時にフラグを指定するだけ
これは、フィニッシュアクティビティアニメーションを無効にするときに機能します。
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
私は4.4.2を使用しています。起動アクティビティのonCreate()で overridePendingTransition(0、0)を呼び出すと、開始アニメーションが無効になります(startActivity()が機能しなかった直後にoverridePendingTransition(0、0)を呼び出した場合)。別の回答で述べたように、finish()の後にoverridePendingTransition(0、0)を呼び出すと、閉じるアニメーションが無効になります。
ところで、 "android:windowAnimationStyle"> @ null(ここで述べた別の回答)でスタイルを設定すると、起動アクティビティがアクションバーのタイトルを設定しようとするとクラッシュすることがわかりました。さらにデバッグすると、どういうわけかこれによりwindow.hasFeature(Window.FEATURE_ACTION_BAR)がアクティビティのinitActionBar()で失敗することがわかりました。
FLAG_ACTIVITY_NO_ANIMATIONは機能する可能性がありますが、FLAG_ACTIVITY_CLEAR_TASKおよびFLAG_ACTIVITY_NEW_TASKと組み合わせるとうまくいきませんでした。他のトップレベルのビューに横方向に移動すると、新鮮なアクティビティスタックで新しいタスクを作成するためのアニメーションが表示されているようです。
ここで機能したのは、「overridePendingTransition(0、0);」を呼び出すことでした。startActivity()呼び出しの直後またはonPause()のいずれか。どちらの方法でも機能しましたが、startActivity()の後に実行すると、アニメーションが必要な場合と必要でない場合を少し制御できます。
を使用して、あるアクティビティから別のアクティビティへのスライド遷移で黒い画面が表示されるという同様の問題がありましたoverridependingtransition。そして、私は以下の方法に従って、それはうまくいきました
1)noanim.xmlanimフォルダーに作成
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0%p"
android:toYDelta="0%p" />
そして使用された
overridePendingTransition(R.drawable.lefttorightanim, R.anim.noanim);
最初のパラメーターは私のオリジナルのアニメーションで、2番目のパラメーターはダミーのアニメーションとしての終了アニメーションです。
既にスタックにあるアクティビティを開始するときに黒い背景を避けるために、私overridePendingTransition(0,0)はonStart()次のように追加しまし
た:
@Override
protected void onStart() {
overridePendingTransition(0,0);
super.onStart();
}
FLAG_ACTIVITY_NO_ANIMATIONとoverridePendingTransitionはどちらもAPIレベル5以上のみであることに注意してください。