簡體   English   中英

Android TaskStackBuilder 丑陋的過渡

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM