我想要实现的目标是:针对现有活动 开始一个带有过渡动画的新活动。
我想升级当前活动,新活动将落后于当前活动。
以下是上滑动画: 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>
以下是我如何应用活动动画过渡:
overridePendingTransition ( 0 , R.anim.slide_up );
我使用0作为输入活动,因为我不想为新活动添加任何动画,并且它不起作用(不执行动画)。如果我也使用动画来输入活动,它也可以工作(两个动画都会执行),如下所示:
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
答案 0 :(得分:12)
更改退出动画,使其呈现在输入活动的顶部。
<强> 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>
然后你可以做你最初做的事情来设置动画。
overridePendingTransition ( 0 , R.anim.slide_up );
答案 1 :(得分:3)
我有完全相同的过渡,这样的动画对我有用:
<?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" />
答案 2 :(得分:2)
在startActivity方法之后调用以下方法。
overridePendingTransition(0,0);
这将覆盖默认动画并且不执行动画。如果您愿意,也可以提供一些自定义动画
overridePendingTransition(R.anim.animation1,R.anim.animation2);
答案 3 :(得分:0)
无论您何时调用启动Activity的意图,都需要修改意图。
ActivityOptions options =
ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this);
startActivity(intent, options.toBundle());
如果您有setupTransitions()
的专用方法,您可以将接下来的两行代码放在那里,否则您可以将它们放在onCreate()
getWindow().setEnterTransition(new Slide(Gravity.RIGHT).setDuration(800));
Gravity.RIGHT 决定了您要开始下一个活动的方向。 setDuration()
方法是可选的,为了更平滑过渡我使用它,你不必。
通过使用不同的Gravity和setDuration属性来探索更多内容。