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

64jmpszr  于 2023-01-24  发布在  Android
关注(0)|答案(4)|浏览(101)

在我的android应用程序中,我创建了一个弹出所有活动并调出第一个活动的方法。
我使用这个代码:

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

我注意到转换仍然是从左到右的动画,有人知道是否有方法在启动Activity时更改系统动画吗?
实际上,我希望有一个从右到左的过渡(就像当返回按钮被点击)
谢谢帮忙!

hpcdzsge

hpcdzsge1#

CoolMcGrr是对的,您希望使用overridePendingTransition(int enterAnim, int exitAnim)
为了获得标准的“后退按钮”转换,我使用以下转换作为enterAnimexitAnim转换:

在.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>

右推输出.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>
bnlyeluc

bnlyeluc2#

您应该查看Activity.overridePendingTransition()。
当然,这要求您至少运行SDK的2.0版。

33qvvth1

33qvvth13#

现在出现问题是因为pre-ICS和ICS有不同的内置Activity转换。这比定义自己的动画和SDK独立要干净得多:

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

这将启动Activity(尚不可见),并播放“Activity finish”过渡到新Activity。

tvz2xvvm

tvz2xvvm4#

我用这个代码:

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

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

相关问题