【发布时间】:2013-11-04 23:19:24
【问题描述】:
我知道这是互联网上的一些示例,在 Stackoverflow 上我也发现了很多示例,但信不信由你,它们都没有满足我的需求。 Even I have asked a similar question few time ago 我又陷入了这个问题。基本上是同一个问题,但方向相反。我可以用Activity B 做任何我想做的动画,但这里的问题是Activity A,我可以在少数情况下制作动画。基本上ActivityA玩enter_left只有这个组合:
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_on_left);
我想要做的是在startActivity() 和onBackPressed() 上仅对Activity A 进行动画(移动),而Activity B 在屏幕上保持不动。 Activity A 将始终绘制在顶部(作为滑动菜单,我可以使用 Activity B 来做到这一点)。
我真的认为上面的 sn-p 会完成工作:
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 个必要的动画:
从左输入
<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 重叠。
【问题讨论】:
标签: android animation android-activity android-xml