當咱們不知足於系統默認的activity動畫交互方式,咱們能夠經過在主題裏面,指定activity動畫樣式來實現自定義交互效果。android
在style裏面定義樣式app
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> </style> <style name="AppTheme.upDown" parent="AppTheme"> <item name="android:windowAnimationStyle">@style/activityAnimationUpDown</item> </style> <style name="activityAnimationUpDown" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/slide_in_bottom</item> <item name="android:activityOpenExitAnimation">@anim/slide_out_top</item> <item name="android:activityCloseEnterAnimation">@anim/slide_in_top</item> <item name="android:activityCloseExitAnimation">@anim/slide_out_bottom</item> </style>
在androidManifest.xml裏面,對指定的activity使用該主題ide
<activity android:name=".Main2Activity" android:theme="@style/AppTheme.upDown" ></activity>
這四個屬性容易很差記,按照順序咱們簡單的記憶口訣是「新進、舊出;舊進、新出」;動畫
不用擔憂順序搞混的問題,android studio從新排版的順序就是按照這個順序來的。spa
當新、舊兩個activity都是用這個動畫主題時,進入、退出動畫是正常的。(這種狀況通常都是咱們在Application裏面統一指定的全部activity的交互動畫。)code
一旦二者之中,所使用的動畫主題不一致的時候,交互就出現問題了。xml
具體爲:blog
舊activity沒有、新activity有主題;進入動畫用新的,退出動畫用舊的 (退出動畫「失效」)it
舊activity有主題,新activity沒有:進入動畫用舊的, 退出動畫用新的 (進入動畫「失效」)
io
不少都是第二種狀況,那麼如何讓退出動畫產生效果呢,代碼以下:
void finishActivity() { finish(); //第一個參數是舊activity進入動畫,第二個參數是當前activity退出動畫 overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_bottom); }