2012-04-11 38 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