A Activity 顯示時啟動 B Activity,B 從底部滑入覆蓋 A;返回時 B 從底部滑出,A 逐漸顯示。A 需保持不銷毀。
overridePendingTransition 定義進出動畫。<style name="TransparentActivity" parent="@android:style/Theme.Translucent.NoTitleBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
Manifest 套用:android:theme="@style/TransparentActivity"。
res/anim/slide_in_bottom.xml(進場)
<translate xmlns:android="https://schemas.android.com/apk/res/android"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="300" />
res/anim/slide_out_bottom.xml(退場)
<translate xmlns:android="https://schemas.android.com/apk/res/android"
android:fromYDelta="0%p" android:toYDelta="100%p"
android:duration="300" />
startActivity(new Intent(this, BActivity.class));
overridePendingTransition(R.anim.slide_in_bottom, R.anim.hold); // hold 為空動畫或 0
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom);
}
或在 onBackPressed 中同理。
<translate android:fromYDelta="0" android:toYDelta="0" android:duration="1" />
ActivityOptions.makeCustomAnimation 替代 overridePendingTransition。onCreate 呼叫 overridePendingTransition,必須緊隨 startActivity 或 finish 之後。