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

35

在我的Android应用中,我正在创建一个方法,该方法弹出所有活动并启动第一个活动。

我使用以下代码:

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

我注意到转换动画仍然是从左到右的,是否有一种方法可以在启动活动时更改系统动画呢?

实际上,我最好想要一个从右到左的过渡效果(就像点击返回按钮时那样)

谢谢帮助!

4个回答

47

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
对我来说,这似乎是一个更好的答案,因为 E-Riz 实际回答了问题,而不仅仅像 CoolMcGrrr 那样发布了一个链接。不过话说回来,E-Riz 回答这个问题比 CoolMcGrrr 晚了8个月。 - ArtOfWarfare
你会在哪里调用overridePendingTransition?在startActivity之前还是之后? - Apqu
@Tur,刚刚阅读了Javadoc:http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int, int) - E-Riz

9

7

我使用了以下代码:

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

你可以在GmailAnimationLopeAnimations中查看这些例子。此外,你还可以在这个博客中了解更多相关信息。

7

问题在于现在,因为Pre-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();

这将启动活动(尚不可见)并对新活动播放“活动完成”转换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接