我知道这是互联网上的一些例子,在Stackoverflow上我也发现了很多例子,但信不信由你,它们都没有满足我的需求。即使我前几次问过类似的问题,我也再次陷入了这个问题。基本上是同一个问题,但方向相反。我可以做任何我想做的动画,Activity B
但这里的问题是Activity A
我只能在少数情况下制作动画。基本上只ActivityA
玩enter_left
这个组合:
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_on_left);
我想要做的是动画(移动)只是在屏幕上保持Activity A
不动startActivity()
。将始终绘制在顶部(作为滑动菜单,我可以使用 来做到这一点)。我真的认为上面的代码片段可以完成工作:onBackPressed()
Activity B
Activity A
Activity B
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivityForResult(intent, 500);
overridePendingTransition(R.anim.stay_still, R.anim.exit_on_left);
但这甚至不播放任何动画,而
//this is the animation for onBackPressed()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
overridePendingTransition(R.anim.enter_from_left, 0);
}
随心所欲地制作动画Activity A
,但Activity B
突然从屏幕上消失,我想留下来(设置(R.anim.enter_from_left, R.anim.stay_still)
什么都不做)。
我准备了所有 5 个必要的动画:
enter_from_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="500"
android:fromXDelta="-100%"
android:toXDelta="0%" />
</set>
exit_on_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="500"
android:fromXDelta="0%"
android:toXDelta="-100%" />
</set>
enter_from_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="500"
android:fromXDelta="100%"
android:toXDelta="0%" />
</set>
exit_on_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="500"
android:fromXDelta="0%"
android:toXDelta="100%" />
</set>
保持静止
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="500"
android:fromXDelta="0%"
android:toXDelta="0%" />
</set>
我尝试了很多组合,但没有一个有效。你能告诉我这个动画是否可能,是否可以以这种方式完成?我将发布一张图片,以更清楚地说明我想要做什么:
所以,第一步:打开startActivity()
,ActivityA
应该从左侧离开屏幕,在移动时,Activity B
应该已经“在那儿”,“在它下面”。
然后,onBackPressed()
Acyivity B
应该“回来”,从屏幕左侧进入并重叠ActivityB
保持不动。