Android活动转换animation

我想要实现的是: 仅为退出活动启动一个带有过渡animation的新活动。

我想滑动当前的活动,新的活动将落后于当前的活动。

这里是向上滑动animation: R.layout.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1000" android:fromYDelta="0%" android:toYDelta="100%" /> </set> 

下面是我如何应用活动animation转换:

 overridePendingTransition ( 0 , R.anim.slide_up ); 

我正在使用0作为input活动,因为我不想为新活动提供任何animation,并且它不工作(不执行animation)。 如果我也使用animation来input活动,它也可以工作(两个animation都被执行),如下所示:

 overridePendingTransition ( R.anim.slide_out , R.anim.slide_up ); 

R.anim.slide_out

 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1000" android:fromYDelta="100%" android:toYDelta="0%" /> </set> 

有任何想法吗 ?

我正在使用Android 4.1.2和Android 4.0.4

  • 使用ObjectAnimatoranimationweightSum属性
  • 开发Android主屏幕
  • Android:如何拍出漂亮的心跳animation?
  • Android:LinearLayout addViewanimation
  • 如何从中心裁剪animationImageView填充屏幕,反之亦然(脸谱风格)?
  • Android - 按下旋转/旋转“加载”图像的button
  • 一旦高度为0,LinearyLayout将不会resize
  • Android将animation缩放到指定的大小
  • 改变您的退出animation,使其在进入的活动之上呈现。

    R.anim.slide_up

     <set xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="top"> <translate android:duration="1000" android:fromYDelta="0%" android:toYDelta="100%" /> </set> 

    那么你可以做你最初做的设置animation。

     overridePendingTransition ( 0 , R.anim.slide_up ); 

    我有完全相同的过渡和这样的animation作品对我来说:

     <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromYDelta="0%" android:toYDelta="100%" android:zAdjustment="top" android:duration="300" /> 

    在startActivity之后使用下面的行

     overridePendingTransition(0,0); 

    这将覆盖默认的animation,不做animation。 如果你喜欢,你也可以给一些自定义的animation

     overridePendingTransition(R.anim.animation1,R.anim.animation2); 

    无论您打电话来启动活动,都需要修改意图。 ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this); startActivity(intent, options.toBundle());

    如果你有任何专门的方法setupTransitions()你可以把下面两行代码放在那里,否则你可以把它们放在onCreate()

     getWindow().setEnterTransition(new Slide(Gravity.RIGHT).setDuration(800)); 

    Gravity.RIGHT决定了你想要开始下一个活动的方向。 setDuration()方法是可选的,为了更平滑的过渡,我使用它,你不必。

    通过使用不同的重力和setDuration属性来探索更多。