2013-02-26 145 views
10

我試圖實現的是:用退出活動的轉換動畫開始新活動,只有Android活動轉換動畫

我想滑動當前活動,新活動將落後於當前活動。

這裏是滑動畫:R.layout.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:duration="1000" 
     android:fromYDelta="0%" 
     android:toYDelta="100%" /> 

</set> 

下面是我申請活動的動畫過渡:

overridePendingTransition (0 , R.anim.slide_up); 

我我使用0作爲輸入活動,因爲我不想爲新的動畫活動,並且它不工作(不執行動畫)。如果我使用的動畫進入活動也一樣,它的工作原理(包括動畫執行),像這樣的:

overridePendingTransition (R.anim.slide_out , R.anim.slide_up); 

其中R.anim.slide_out

<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:duration="1000" 
     android:fromYDelta="100%" 
     android:toYDelta="0%" /> 

</set> 

任何想法?

我的工作在Android 4.1.2和Android 4.0.4

回答

12

改變你的退出動畫,使其呈現在進入活動的頂部。

R.anim.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:zAdjustment="top"> 

    <translate 
     android:duration="1000" 
     android:fromYDelta="0%" 
     android:toYDelta="100%" /> 

</set> 

那麼你可以做你最初做設定動畫的內容。

overridePendingTransition (0 , R.anim.slide_up); 
3

我有完全一樣的過渡,這樣的動畫作品對我來說:

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/accelerate_interpolator" 
android:fromYDelta="0%" android:toYDelta="100%" android:zAdjustment="top" 
android:duration="300" /> 
+1

這是因爲它不完全相同的過渡。您有zAdjustment =「top」屬性設置,它允許現有動畫播放輸入動畫的頂部,因爲默認情況下輸入的動畫播放退出。 – MCeley 2013-02-26 14:03:48

+0

這就是要害:) – Zielony 2013-02-26 14:05:58

1

使用下面的線startActivity

overridePendingTransition(0,0); 

這將覆蓋默認的動畫,做沒有動畫。你也可以給一些自定義動畫,如果你喜歡

overridePendingTransition(R.anim.animation1,R.anim.animation2); 
0

無論您呼叫的意圖開始活動,您需要修改的意圖。 ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this); startActivity(intent, options.toBundle());

如果您有任何專門的方法來setupTransitions()你可以把代碼接下來的兩行那裏,否則你可以把它們放在onCreate()

getWindow().setEnterTransition(new Slide(Gravity.RIGHT).setDuration(800)); 

重力。正確的決定了你想要開始下一個活動的方向。 setDuration()方法是可選的,爲了更平滑的過渡我使用它,你不必。

通過使用不同的Gravity和setDuration屬性來探索更多。