5

我有一个应用程序,我在标准活动上使用默认的滑入/滑出效果,并在一些特定活动上淡入/淡出。

我注意到新的 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:我已经看到了这个新的 Android 4.0 活动之间的屏幕转换,但现在已经提供了答案。

4

1 回答 1

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 而不是 Activity ,并且默认情况下转换应该都是滑动的。

于 2012-04-11T17:32:35.447 回答