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

Rom*_*iel 34 animation android transition android-intent android-activity

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

我用这个代码:

Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

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

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

感谢帮助!

E-R*_*Riz 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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


Coo*_*rrr 8

你应该看看Activity.overridePendingTransition().

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


Cab*_*zas 7

我用过这段代码:

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
Run Code Online (Sandbox Code Playgroud)

您可以在GmailAnimationLopeAnimations中查看这些示例.您还可以在此博客中查看更多内容.


dze*_*kei 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();
Run Code Online (Sandbox Code Playgroud)

这将启动活动(尚未显示)并播放"活动结束"到新活动的过渡.