web-dev-qa-db-ja.com

FLAG_ACTIVITY_CLEAR_TOPを使用したアクティビティ間のアニメーション遷移

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

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

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

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

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

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

33
Romain Piel

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>
45
E-Riz

ご覧ください Activity.overridePendingTransition()

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

8
CoolMcGrrr

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();

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

6
dzeikei

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

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

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

6
Cabezas