2012-04-11 35 views
5

我有一個應用程序,我在標準活動中使用了默認的幻燈片輸入/輸出效果,並在某些特定活動中淡入/淡出。Android ICS活動從淡入/淡出轉換回滑動

我注意到,新的Android 4.X(ICS)有一個不同的默認值,它完全淡入/淡出。

我如何定義我的標準活動中的滑入/滑出效果?

我一直在試圖與定義它:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    this.overridePendingTransition(0, android.R.anim.slide_in_left);     
    super.onCreate(savedInstanceState); 
} 

@Override 
public void onPause() 
{ 
    super.onPause(); 
    overridePendingTransition(android.R.anim.slide_out_right, 0); 
} 

要重現輸入/輸出淡入效果我正在使用:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    this.overridePendingTransition(0, android.R.anim.fade_in);     
    super.onCreate(savedInstanceState); 
} 

@Override 
public void onPause() 
{ 
    super.onPause(); 
    overridePendingTransition(android.R.anim.fade_in, 0); 
} 

,但仍未能成功複製它。

此外,我在onCreate和onPause上使用此代碼,這是正確的嗎?還是有更好的地方可以放?

感謝

PS:我已經看到了這個New Android 4.0 Screen Transitions Between Activities但現在答案已經提供。

回答

10

overridePendingTransition()必須在啓動新活動後立即調用,因此您可以在startActivity(intent)之後調用它。 要創建默認值,您可以創建一個擴展Activity並覆蓋startActivity,onBackPressed()等的類來覆蓋轉換。例如:

public class MyActivity extends Activity { 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    overridePendingTransition(R.anim.slide_in_transition,R.anim.slide_out_transition); 
} 

@Override 
public void startActivity(Intent intent) { 
    super.startActivity(intent); 
    overridePendingTransition(R.anim.slide_in_transition,R.anim.slide_out_transition); 
} 

@Override 
public void finish() { 
    super.finish(); 
    overridePendingTransition(R.anim.slide_in_transition,R.anim.slide_out_transition); 
} 



} 

然後,就延長MyActivity,而不是活動在你的活動和轉變都應該被默認滑動。

+0

默認轉場爲slide_in_left和slide_out_right。您使用了其他名稱..那麼您可以爲它們定義XML嗎? – neteinstein 2012-04-11 19:07:38

+2

我通常定義我自己的,但我看不出爲什麼你不能使用默認值。 – anakin78z 2012-04-12 00:36:30

+0

+1我怎麼能打電話給默認的?我是否需要爲默認創建一個新的xml? – Roylee 2013-04-24 08:30:33