gpt4 book ai didi

android - TaskStackBuilder 过渡动画

转载 作者:IT王子 更新时间:2023-10-28 23:47:37 25 4
gpt4 key购买 nike

我正在使用 Android L 转换,在 Intent 中传递 ActivityOptions 包。如何使用 TaskStackBuilder 以相同的 Intent 重现动画?

这是我目前使用单个 Intent 的工作方法:

startActivity(myIntent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

这是我对 TaskStackBuilder 的尝试:

 TaskStackBuilder builder = TaskStackBuilder.create(this);
builder.addNextIntentWithParentStack(myIntent);
builder.startActivities(ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

但动画产生了一种奇怪的效果,与“单一 Intent ”版本不同。

我也试过了:

builder.addNextIntent(myIntent);

代替:

builder.addNextIntentWithParentStack(myIntent);

最佳答案

在深入了解 TaskStackBuilder 的实现之后,问题是它强制将 Intent.FLAG_ACTIVITY_CLEAR_TASK 添加到堆栈中的第一个 Intent ,这会产生奇怪的效果,所以使用以下命令启动堆栈:

Intent[] intents = TaskStackBuilder.create(this)
.addNextIntentWithParentStack(myIntent)
.getIntents();
if (intents.length > 0) {
intents[0].setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// Or any other flags you want, but not the `.._CLEAR_..` one
}
// `this` inside current activity, or you can use App's context
this.startActivities(intents, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

这里的想法是仍然使用 TaskStackBuilder 来创建您的 Intent 堆栈,然后删除 TaskStackBuilder 中奇怪的 Intent.FLAG_ACTIVITY_CLEAR_TASK添加到第一个 Intent ,然后使用您想要的任何上下文手动启动 Activity 。

关于android - TaskStackBuilder 过渡动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33893175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com