新增對內建和自訂預測返回動畫的支援

如果您已將應用程式遷移至新的系統返回 API,可以選擇啟用預測返回功能來自動接收應用程式內動畫,並支援自訂轉場效果。

新增對內建應用程式內動畫的支援

影片:預測返回動畫

啟用這項功能後,應用程式會顯示返回首頁、跨活動和跨工作的動畫。

您也可以將 Material 元件的依附元件升級至 MDC Android 1.10.0 版,方便接收 Material 元件動畫,如下所示:

這部影片中的簡短範例是使用 Android「設定」應用程式,呈現跨活動和返回首頁的預測返回動畫。

  1. 在動畫中,使用者往回滑動,藉此返回上一個設定畫面。這是跨活動動畫的範例。
  2. 接著在上一個畫面中,使用者再次往回滑動,藉此預覽主畫面和桌布。這是返回首頁動畫的範例。
  3. 使用者持續向右滑動,出現視窗縮小為主畫面上圖示的動畫。
  4. 現在使用者已完全返回主畫面。

進一步瞭解如何支援預測返回手勢

新增自訂應用程式內轉場效果和動畫

在 Android 14 中,您可以針對應用程式的自訂時刻,建立自訂應用程式內轉場效果和動畫。

只要使用一組預測返回進度 API,即可開發自訂應用程式內轉場效果和動畫。

在 AndroidX Activity 1.8.0-alpha01 以上版本中,您可以在應用程式內為預測返回手勢新增自訂轉場效果。在 OnBackPressedCallback 中已導入 handleOnBackProgressedhandleOnBackCancelledhandleOnBackStarted 方法,可在使用者滑動返回時為物件建立動畫。如果除了新系統動畫或 Material 元件動畫提供的預設動畫,您還需要其他自訂動畫,請使用這些方法。

以下模擬畫面顯示使用 OnBackPressedCallback 實作的自訂動畫,在本範例中為一個簡單方塊。模擬畫面中的方塊會縮小,並隨著滑動方向移動。

以下為實作這項功能的範例。

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        ...
        val box = findViewById<View>(R.id.box)
        val screenWidth = Resources.getSystem().displayMetrics.widthPixels
        val maxXShift = (screenWidth / 20)

        // For the purposes of demonstration, this code snippet presents the
        // callback as being always enabled. However, in practice it's always a
        // good idea to always disable the callback when you're ready for the
        // system to handle back events.
        val callback = object : OnBackPressedCallback(enabled = true) {

            override fun handleOnBackProgressed(backEvent: BackEvent) {
                when (backEvent.swipeEdge) {
                    BackEvent.EDGE_LEFT ->
                        box.translationX = backEvent.progress * maxXShift
                    BackEvent.EDGE_RIGHT ->
                        box.translationX = -(backEvent.progress * maxXShift)
                }
                box.scaleX = 1F - (0.1F * backEvent.progress)
                box.scaleY = 1F - (0.1F * backEvent.progress)
            }

            override fun handleOnBackPressed() {
                // Do something after the back gesture completes.
            }

            override fun handleOnBackCancelled() {
                // e.g. reset box to the original position
            }
        }
        this.onBackPressedDispatcher.addCallback(callback)
    }
}

我們預期大部分應用程式都會使用回溯相容的 AndroidX API,但 OnBackAnimationCallback 中也提供類似的平台 API,方便您在 Android 14 開發人員預覽版 1 以上版本中進行測試。

在 Android 14 以上版本新增自訂活動轉場效果

如要在 Android 14 以上版本中,確保自訂活動轉場效果可支援預測返回手勢,您可以使用 overrideActivityTransition,而不使用 overridePendingTransition。這表示使用者滑動返回時,系統會播放轉場效果動畫。

以下舉例說明這項機制的運作方式。假設在返回堆疊中,活動 B 位於活動 A 上方。您會採取下列做法處理自訂活動動畫:

  • 在活動 B 的 onCreate 方法中,呼叫開始或結束的轉場效果。
  • 在使用者前往活動 B 時,使用 OVERRIDE_TRANSITION_OPEN。在使用者滑動返回活動 A 時,則使用 OVERRIDE_TRANSITION_CLOSE
  • 如果指定 OVERRIDE_TRANSITION_CLOSEenterAnim 是活動 A 的進入動畫,exitAnim 則是活動 B 的結束動畫。