使用FLAG_ACTIVITY_CLEAR_TOP在活动之间进行动画转换

时间:2010-08-17 16:16:06

标签: android animation android-activity android-intent transition

在我的Android应用程序中,我正在制作一个弹出所有活动并启动第一个活动的方法。

我使用此代码:

Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);

我注意到转换仍然是从左到右的动画,有人知道在开始活动时是否有办法改变系统动画?

实际上,我理想地希望有一个从右到左的过渡(就像点击返回按钮时一样)

感谢您的帮助!

4 个答案:

答案 0 :(得分:45)

CoolMcGrr是对的,你想使用overridePendingTransition(int enterAnim, int exitAnim)

要专门获取标准的“后退按钮”转换,我将这些转换为enterAnimexitAnim转换:

<强> push_right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_shortAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_shortAnimTime" />
</set>

<强> push_right_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_shortAnimTime"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="@android:integer/config_shortAnimTime" />
</set>

答案 1 :(得分:8)

你应该看看Activity.overridePendingTransition()

当然,这要求您至少运行SDK的2.0版本。

答案 2 :(得分:6)

现在出现问题,因为前ICS和ICS具有不同的内置活动转换。 这比定义自己的动画和SDK独立更简洁:

Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NO_ANIMATION);
this.startActivity(intent);
finish();

这将启动活动(尚未显示)并播放&#34;活动结束&#34;过渡到新活动。

答案 3 :(得分:6)

我使用了这段代码:

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

您可以在GmailAnimationLopeAnimations中查看这些示例。您还可以在此Blog中看到更多内容。