[英]Android TaskStackBuilder ugly transition
TaskStackBuilder 到底有什么問題,它在開始新活動時使用了這種丑陋的過渡。:
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(this)
.addParentStack(ActivityB.class)
.addNextIntent(new Intent(this, ActivityB.class));
taskStackBuilder.startActivities();
這基本上是 google 的標准代碼,但是如果您運行此代碼,您將在轉到 ActivityB 時看到一個超級丑陋的過渡。
我猜是因為它是一個新任務。 但我不希望它看起來像這樣,我有什么可以做的嗎?
謝謝 !
在深入挖掘TaskStackBuilder
的實現后,問題在於它強制將Intent.FLAG_ACTIVITY_CLEAR_TASK
添加到堆棧中的第一個意圖,這會導致丑陋的轉換,因此請使用以下內容啟動堆棧:
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
來創建您的意圖堆棧,然后刪除TaskStackBuilder
添加到第一個意圖的奇怪Intent.FLAG_ACTIVITY_CLEAR_TASK
,然后使用您想要的任何上下文手動啟動活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.