35

私の Android アプリでは、すべてのアクティビティをポップして最初のアクティビティを起動するメソッドを作成しています。

私はこのコードを使用します:

Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);

トランジションがまだ左から右へのアニメーションであることに気付いたので、アクティビティを開始するときにシステム アニメーションを変更する方法があるかどうか誰か知っていますか?

実際には、理想的には右から左への遷移が必要です (戻るボタンがタップされたときなど)。

手伝ってくれてありがとう!

4

4 に答える 4

46

CoolMcGrr は正しいですoverridePendingTransition(int enterAnim, int exitAnim)

具体的には、標準の「戻るボタン」トランジションを取得するために、これらをenterAnimおよびexitAnimトランジションとして使用します。

push_right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_shortAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_shortAnimTime" />
</set>

push_right_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_shortAnimTime"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="@android:integer/config_shortAnimTime" />
</set>
于 2011-06-27T17:47:42.310 に答える
8

Activity.overridePendingTransition()を確認する必要があります。

もちろん、これには少なくともバージョン2.0のSDKを実行する必要があります。

于 2010-10-12T09:29:16.953 に答える
7

私はこのコードを使用しました:

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

これらの例はGmailAnimationまたはLopeAnimationsで見ることができます。また、このブログで詳細を見ることができます。

于 2014-09-04T15:46:47.180 に答える
7

現在、ICS 以前と ICS には異なる組み込みのアクティビティ遷移があるため、問題が発生しています。これは、独自のアニメーションと SDK に依存しないものを定義するよりもはるかに簡潔です。

Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NO_ANIMATION);
this.startActivity(intent);
finish();

これにより、アクティビティが開始され (まだ表示されていません)、新しいアクティビティへの「アクティビティ終了」トランジションが再生されます。

于 2012-10-22T06:37:01.500 に答える