overridePendingTransition中只出现一个animation

我有两个活动A和B.在A中,我打电话给B:

Intent intent = new Intent(this, ActivityB.class); this.startActivity(intent); overridePendingTransition(R.anim.activity_animation_right_to_left, R.anim.activity_animation_zoom_in); 

但是,只有R.anim.activity_animation_right_to_left有效。 其他animation未应用。 此外,从B回到A:

 finish(); overridePendingTransition(R.anim.activity_animation_zoom_out, R.anim.activity_animation_left_to_right); 

onl R.anim.activity_animation_left_to_right有效。 我相信其他animation在其他情况下就像魅力一样(它们没有任何问题)。 在调用外部活动(例如打开浏览器窗口)时,我甚至使用相同的转换。 animation有效。 仅适用于我的活动B,它不起作用。

编辑:这是animationXML:

R.anim.activity_animation_right_to_left

   

R.anim.activity_animation_left_to_right

   

R.anim.activity_animation_zoom_in

     

我终于修好了。 我查看了我的Manifest文件,发现我将主题Theme.Translucent.NoTitleBar设置为我创建的每个活动。 有一次,我从所有这些主题中删除了主题,animation就像一个魅力。 不过,不知道为什么这个主题会影响animation。

animation的一些例子可能会有所帮助

anim_left:

     

anim_right:

    

anim_back_left:

     

anim_back_right:

     

对于淡入:

      

消退:

      

   

(尝试将此添加到您的清单)

  • 你是否尝试在onPause,onResume或onCreate中添加overridePendingTransition
  • 你在手机设置中激活了animation吗?
  • 尝试其他设备

我更改了animation放大,缩小function,并且在我的设备(Nexus 4)中运行良好。

A-> B

 overridePendingTransition(R.anim.activity_animation_zoom_in, R.anim.activity_animation_right_to_left); 

B-> A

 overridePendingTransition(R.anim.activity_animation_left_to_right, R.anim.activity_animation_zoom_out); 

R.anim.activity_animation_zoom_in

     

R.anim.activity_animation_zoom_out

     

使用startActivityForResult ..并覆盖Source Activity(Activity A)中的onActivityResult并应用反向animation(例如从右到左)。 使用以下我正在使用

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); overridePendingTransition(R.anim.transition_left_to_right, R.anim.transition_left_to_right_out); } 

我认为问题在于,当你从A到B时,A进入后台并且它仍然存在,所以当你从B回到A时, overridePendingTransition将不适用于A.正如文档所述有关overridePendingTransition

在startActivity(Intent)或finish()的一种风格之后立即调用,以指定下一步要执行的显式转换animation。

您是否可以尝试在A中填写finish ,就像在B中从B到A时一样,在overridePendingTransition之前,确保A被杀死,因此overridePendingTransition可以工作,如下所示:

活动A:

 /** Called when the user presses the Next soft button */ public void nextButtonOnClick(View view) { finish(); overridePendingTransition(R.anim.activity_animation_right_to_left, R.anim.activity_animation_zoom_in); Intent intent = this.getIntent(); intent.setClass(this, ActivityB.class); startActivity(intent); } 

活动B:

 /** Called when the user presses the Back soft button */ public void backButtonOnClick(View view) { onBackPressed(); } @Override /** Called when the user presses the Back hard button */ public void onBackPressed() { finish(); overridePendingTransition(R.anim.activity_animation_zoom_out, R.anim.activity_animation_left_to_right); Intent intent = this.getIntent(); intent.setClass(this, ActivityA.class); startActivity(intent); } 

我希望它对你有所帮助。