overridePendingTransition滑动活动进出顺利

我无法弄清楚如何通过按一个button来滑动活动。 我想要的是用户按下button,然后屏幕滑动。 我想要的方式是第一个活动(带button的活动)向左滑动,而新的第二个活动从右侧滑入。

用下面的代码,当点击button时,第一个活动向右滑动,当我想要向左滑动时。 然后,当它完成滑动,剩下的只是一秒钟的黑屏,然后第二个活动刚刚出现,并没有滑入。

所以第一个活动是滑出不正确的方向,下一个活动刚刚出现,而不是滑动。 我究竟做错了什么? 我很难理解XML文件,因此听到的是下面所有内容的代码。

第一次活动

@Override public void onCreate(Bundle savedInstanceState) { playBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MainMenu.this, Levels.class); startActivity(intent); overridePendingTransition(R.anim.enter_from_right, R.anim.exit_out_left); } }); 

第二次活动

 @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.levels); overridePendingTransition(R.anim.enter_from_left, R.anim.exit_out_right); 

所以我想我的一些XML文件可能是不正确的。 他们来了。

enter_from_left.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromXDelta="100%" android:toXDelta="0%" > </translate> </set> 

enter_from_right.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromXDelta="-100%" android:toXDelta="0%" > </translate> </set> 

exit_out_left.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromXDelta="0%" android:toXDelta="-100%" > </translate> </set> 

exit_out_right.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromXDelta="0%" android:toXDelta="100%" > </translate> </set> 

编辑从第二个活动中移除overridePendingTransition()使得第一个活动向左滑出,这是我想要的。 但是,当第一个活动滑过时,它仍然只是显示一个黑屏,而不是从第二个活动滑入右侧。

Solutions Collecting From Web of "overridePendingTransition滑动活动进出顺利"

而不是在startActivity()和新的活动onCreate()中重写animation,只需要在startActivity()调用之后重写animation。

您为overridePendingTransition(int enterAnim, int exitAnim)提供的两个int对应于两个animation – 删除旧的Activity并添加新的animation。

对于你的第二个问题,我相信你已经把fromXDelta设置成错了,-100%应该完全离开屏幕的左边 ,而不是右边,所以把它改成100%就应该修正它。

不仅在enter_from_rightanimation中有一个错误,它应该具有100%的fromXDelta而不是-100%,但即使在enter_from_rightanimation中,也应该具有-100%而不是100%的xDelta。

干杯,

enter_from_left fromXDeltaenter_from_left更改为-100% from enter_from_left fromXDelta100% ,这将为您提供正确的滑动animation。

看看我的要点,它完美的作品:

1.覆盖CommonActivity的startActivity并完成

  @Override public void startActivity(Intent intent) { super.startActivity(intent); overridePendingTransition(R.anim.from_right_in, R.anim.from_left_out); } @Override public void finish() { super.finish(); overridePendingTransition(R.anim.from_left_in, R.anim.from_right_out); } 

2.from_left_in.xml

  <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="300"/> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> </set> 

3.from_right_in.xml

  <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:interpolator="@android:interpolator/accelerate_decelerate" android:duration="300"/> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> </set> 

4.from_left_out.xml

  <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" /> </set> 

5.from_right_out.xml

 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="300"/> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" /> </set> 

主要链接: https : //gist.github.com/JagieChen/f5cc44bf663f3722bd19097be47ccf9b