gpt4 book ai didi

Android TaskStackBuilder 丑陋的过渡

转载 作者:行者123 更新时间:2023-12-01 06:06:48 25 4
gpt4 key购买 nike

TaskStackBuilder 到底有什么问题,它在开始新 Activity 时使用了这种丑陋的过渡。:

    TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(this)
.addParentStack(ActivityB.class)
.addNextIntent(new Intent(this, ActivityB.class));
taskStackBuilder.startActivities();

这基本上是谷歌的标准代码,但是如果你运行这个代码,你会在去 ActivityB 时看到一个 super 丑陋的过渡。

我猜是因为它是一个新任务。但我不希望它看起来像这样有什么我能做的吗?

谢谢 !

最佳答案

挖完TaskStackBuilder的实现,问题是它强制添加 Intent.FLAG_ACTIVITY_CLEAR_TASK到堆栈中的第一个 Intent ,这会产生丑陋的过渡,因此使用以下命令启动堆栈:

Intent[] intents = TaskStackBuilder.create(this)
.addParentStack(ActivityB.class)
.addNextIntent(new Intent(this, ActivityB.class))
.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 堆栈,然后删除奇怪的 Intent.FLAG_ACTIVITY_CLEAR_TASKTaskStackBuilder添加到第一个 Intent ,然后使用您想要的任何上下文手动启动 Activity 。

关于Android TaskStackBuilder 丑陋的过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37666568/

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