Android中不同Activity之間的切換是不可避免的事情,Android中提供了一個方法來解決這個問題,即overridePendingTransition(A,B)函數
此方法在startActivity()或者是finish()後調用,例如
startActivity(new Intent(MainActivity.this,SecondActivity.class));
overridePendingTransition(enterAnim, exitAnim)
overridePendingTransition有兩個參數,第一個參數(enterAnim)是作用於SecondActivity 的進入屏幕可見區域效果,第二個參數(exitAnim)是作用於當前 Activity 離開屏幕可見區域效果
打開Activity
MainActivity點擊按鈕打開SecondActivity
startActivity(new Intent(MainActivity.this,SecondActivity.class));
overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);
slide_in_bottom.xml 從底部滑到頂部
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="100%"
android:toYDelta="0"
android:duration="3000"/>
</set>
slide_out_bottom.xml 從頂部滑出底部
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0"
android:toYDelta="100%"
android:duration="3000"/>
</set>
從這張圖可以看出MainActivity
打開SecondActivity
時,SecondActivity
是從底部滑到頂部(執行了slide_in_bottom),而MainActivity
是從頂部滑出底部(執行了slide_out_bottom)
關閉Activity
SecondActivity中有個按鈕,點擊關閉SecondActivity,打開上一個MainActivity
finish();
overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);
從這張圖可以看出SecondActivity
關閉時,SecondActivity
是從頂部滑出底部(執行了slide_out_bottom),而MainActivity
是從底部滑到了頂部(執行了slide_in_bottom)
總結
不要被這倆參數搞暈了,其實很好理解,第一個參數就是進入時的動畫,第二個參數就是離開時的參數。不管是startActivity()
還是finish()
時使用,都遵循這個原則