34

在活動之間進行動畫過渡在我的android應用程序中,我製作了一個方法來彈出所有活動並調出第一個活動。使用FLAG_ACTIVITY_CLEAR_TOP

我用這個代碼:

Intent intent = new Intent(this, MMConnection.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
this.startActivity(intent); 

正如我注意到,過渡仍是一個左到右的動畫,沒有人知道,如果有一種方法啓動一個活動時更改系統動畫?

其實,我最想要的有向左轉移的權利(比如當返回按鈕被點擊)

感謝您的幫助!

回答

45

CoolMcGrr是正確的,你想要使用overridePendingTransition(int enterAnim, int exitAnim)

要專門用標準的 「返回」 按鈕過渡,我用這些作爲enterAnimexitAnim轉換:

push_right_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_shortAnimTime"/> 
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_shortAnimTime" /> 
</set> 

push_right_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_shortAnimTime"/> 
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="@android:integer/config_shortAnimTime" /> 
</set> 
+1

似乎對我來說是一個更好的答案,因爲E-Riz實際上回答了問題,而不是像CoolMcGrrr那樣發佈鏈接。然後,E-Riz在8個月後再次回答。 – ArtOfWarfare 2012-08-17 13:57:41

+0

以後,但更好的答案 – 2012-10-15 09:28:23

+0

你會在哪裏調用overridePendingTransition? startActivity之前還是之後? – Apqu 2014-03-27 10:27:57

5

因爲ICS和ICS具有不同的內置活動轉換,所以現在發生問題。 這是不是定義自己的動畫和SDK獨立的更清潔:

Intent intent = new Intent(this, MMConnection.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NO_ANIMATION); 
this.startActivity(intent); 
finish(); 

這將啓動活動(尚不可見),並打出「活動結束」過渡到新的活動。

6

我用這個代碼:

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 

可以在GmailAnimationLopeAnimations看到這些例子。你也可以在這個Blog看到更多。

相關問題