web-dev-qa-db-ja.com

Android 1.6で、遷移アニメーションなしで新しいアクティビティを開始します

APIレベル5から、新しいアクティビティを開始するときに通常のアニメーションが適用されないように、インテントにフラグを指定できることを認識しています。

myIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

しかし、私の質問は、Android 1.6をサポートするアプリで同じことを達成する方法はありますか?

29
Matt Colliss

これを使用します:開始しているActivity内のgetWindow().setWindowAnimations(0);

20
Wroclai

新しいバージョンでは、アクティビティを開始した直後に、遷移を0,0でオーバーライドする必要があります。

Intent i = new Intent(this, YourNewActivity.class); 
startActivity(i);
overridePendingTransition(0,0);

2.1と4.0.3でこれを試しましたが、うまくいきました。 =)

私はそれをドキュメントで見つけました ここ

51
gulchrider

このソリューションは私のために働いた(Android2.2):

Intent intent = new Intent(getContext(), YourClass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);
6
songokuhd

参考までに、私は4.4.2を使用していますが、これが機能することがわかった唯一のものです。

アニメーションが開くのを防ぐには:起動アクティビティのonCreate()に、overridePendingTransition(0,0)を追加します。

アニメーションが閉じるのを防ぐには: finish()の後、すぐにoverridePendingTransition(0,0)を呼び出します。

これらは機能しません(少なくとも私の4.4.2ビルドでは機能しません):( 1)onCreate()でgetWindow()。setWindowAnimations(0)を呼び出します(ゼロ以外の数値を渡すことは機能しますが、それ以降は醜いハックですresId)を期待しており、(2)startActivity()の直後にoverridePendingTransition(0,0)を呼び出す-アニメーションはまだ存在しています。

5
Steve B

onCreate of Activityに以​​下のコードを配置します:

getWindow().setWindowAnimations(0);
0
Hiren Patel