リンクされた質問から「スライドアップ」アニメーションを定義し、プロセスを逆にするいくつかの新しい「スライドダウン」アニメーションを定義する必要があります。
注目すべきアニメーションの重要な部分は、fromYDelta
とのtoYDelta
値です。これらは、アニメーションの開始時と終了時の (ビューの上部の) Y 位置を定義します。
slide_in_up.xml
<?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="100%p"
android:toYDelta="0%p" />
slide_out_up.xml
<?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="-100%p" />
slide_in_down.xml
<?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="-100%p"
android:toYDelta="0%p" />
slide_out_down.xml
<?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="100%p" />
onResume()
「スライドアップ」アニメーションの場合、次のようにメソッドで保留中の遷移をオーバーライドする必要があります。
protected void onResume()
{
super.onResume();
overridePendingTransition(R.anim.slide_in_up, R.anim.slide_out_up);
}
onPause()
「スライドダウン」アニメーションの場合は、メソッドで同様のことを行います。
protected void onPause()
{
super.onPause();
overridePendingTransition(R.anim.slide_in_down, R.anim.slide_out_down);
}
一部のチュートリアルでは、間違ったライフサイクル メソッドの使用を提案しています。
onCreate()
アクティビティが表示されるたびに呼び出されるわけではありません
onDestroy()
アクティビティが削除されるたびに呼び出されるわけではありません
代わりに、画面遷移があるたびに呼び出されるメソッドを使用します。
onResume()
アクティビティがユーザーに表示されるときに呼び出されます
onPause()
アクティビティが削除されるときに呼び出されます
これらのメソッドの具体的な詳細については、Android 開発者サイトを確認してください。
画面が表示されると、下からスライドインします。
新しい画面が表示されると、画面が下にスライドします。