2012-02-07 48 views
2

在一個活動中,我試圖在兩個Activities之間進行自定義轉換。我希望當前的Activity縮小到其大約一半的大小,然後讓x值執行縮放轉換,看起來好像Activity以3-D旋轉。然後,在動畫結束之後,我想要以完全相反的順序在新的Activity上發生相同的動畫。Android活動轉換順序

我的問題是,我該如何在動畫中暫停動畫,以便輸入Activity的動畫在退出動畫結束之後纔會啓動?我必須使用overridePendingTransition方法,所以傳遞的所有動畫必須爲int,值爲R.anim。否則,使用AnimationListener將很容易。但我想不出一個辦法。

任何想法?

編輯:我已經知道了,所以你可以檢查出答案!

+1

由於您找到了自己的答案,請將您的編輯移至答案,然後接受答案。這對你和社區非常有幫助。 :) – 2012-06-10 23:28:02

回答

4

對於那些試圖完成同樣事情的人,我想通了。祕訣是在XML中使用android:startOffset。代碼如下:

退出動畫:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:fromXScale="1.0" android:toXScale="0.8" 
     android:fromYScale="1.0" android:toYScale="0.8" 
     android:pivotX="50%p" android:pivotY="50%p" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="100" /> 
    <scale 
     android:fromXScale="1.0" android:toXScale="0.0" 
     android:fromYScale="1.0" android:toYScale="1.0" 
     android:pivotX="50%p" android:pivotY="50%p" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="150" 
     android:startOffset="100" /> 
</set> 

入口動畫:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:fromXScale="0.0" android:toXScale="1.0" 
     android:fromYScale="1.0" android:toYScale="1.0" 
     android:pivotX="50%p" android:pivotY="50%p" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="150" 
     android:startOffset="250" /> 

    <scale 
     android:fromXScale="0.8" android:toXScale="1.0" 
     android:fromYScale="0.8" android:toYScale="1.0" 
     android:pivotX="50%p" android:pivotY="50%p" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="100" 
     android:startOffset="400" /> 
</set> 

那麼Java代碼:

startActivity(new Intent(this, YourNextActivity.class)); 
overridePendingTransition(R.anim.enter_anim, R.anim.exit_anim); 

這將創建一個光滑,使得看起來好像正在創建的下一個活動位於當前活動的「背面」上。