私が達成しようとしているのは、開始アクティビティのアニメーションをオーバーライドすることです。
アニメーションは、古いアクティビティが新しいアクティビティの上にあるような印象を与え、画面から下にスライドして新しいアクティビティを表示します。 overridePendingTransition(startAnim, exitAnim)
を使用するなど、複数の方法を試しましたが、問題は、両方が同じタイムラインでアニメーション化することです。したがって、overridePendingTransition(R.anim.hold, R.anim.exit_slide_down);
新しいアクティビティが一番上にあるため、終了アニメーションは表示されません。これはフレームワークを使用して実現できますか?
実際、アニメーションファイルでAndroid:zAdjustment
というプロパティを見つけました。
Android:zAdjustment="bottom"
にhold.xml
を配置し(画面2)、Android:zAdjustment="top"
にPush_down_out.xml
を配置すると(画面1)、目的の効果を得ることができます。
これはzオーダーの問題を回避します(私はそれがアニメーションタイミングの問題であると想定していたため、間違ったツリーを呼び出していました)。
ジョン
私はサンプルプロジェクトであなたの解決策を解決しようと試みており、私はそれをこのコードで動作させました:
アニメーションを呼び出す:
startActivity(new Intent(this, Activity2.class));
overridePendingTransition(R.anim.Push_down_in,R.anim.Push_down_out);
R.anim.Push_down_in:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
<translate Android:fromYDelta="-100%p" Android:toYDelta="0" Android:duration="300"/>
</set>
R.anim.Push_down_out:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
<translate Android:fromYDelta="0" Android:toYDelta="100%p" Android:duration="300"/>
</set>
私のために働く解決策:
R.anim.exit_slide_down
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:zAdjustment="top">
<translate Android:fromYDelta="0"
Android:toYDelta="100%p"
Android:duration="600" />
</set>
...その後
Intent intent = new Intent(activity, SecondActivity.class);
startActivity(intent);
activity.overridePendingTransition(0, R.anim.exit_slide_down);