35

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

我使用这段代码:

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

当我注意到过渡仍然是从左到右的动画时,有人知道是否有办法在启动活动时更改系统动画?

实际上,理想情况下,我希望有一个从右到左的过渡(比如点击返回按钮时)

感谢帮助!

4

4 回答 4

46

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

为了专门获得标准的“后退按钮”转换,我使用这些作为enterAnimandexitAnim转换:

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>
于 2011-06-27T17:47:42.310 回答
8

你应该看看Activity.overridePendingTransition()

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

于 2010-10-12T09:29:16.953 回答
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();

这将启动活动(尚不可见)并播放“活动完成”过渡到新活动。

于 2012-10-22T06:37:01.500 回答
7

我使用了这段代码:

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

您可以在GmailAnimationLopeAnimations中查看这些示例。你也可以在这个博客中看到更多。

于 2014-09-04T15:46:47.180 回答