預測返回和系統動畫預設為啟用。如果應用程式會攔截返回事件,且您尚未遷移至預測返回功能,請更新應用程式,改用支援的返回瀏覽 API
啟用預設系統動畫
如果應用程式已遷移至支援的返回處理 API,搭載 Android 15 以上版本的裝置就會顯示返回首頁、跨活動和跨工作的系統動畫。
- 返回主畫面:讓使用者返回主畫面。
- 跨活動:在應用程式內切換活動。
- 跨工作:在工作之間轉換。
在 Android 15 以上版本中,這些動畫預設為啟用。在搭載 Android 13 或 14 的裝置上,使用者可以透過「開發人員選項」啟用這些功能。
如要取得系統動畫,請將 AndroidX Activity
依附元件更新至 1.6.0 以上版本。
使用 Navigation Compose 啟用預測返回手勢
如要在 Navigation Compose 中使用預測返回手勢,請務必使用 navigation-compose
2.8.0 以上版本的程式庫。
當使用者向後滑動時,Navigation Compose 會自動在畫面之間進行交叉淡出:
導覽時,您可以使用 popEnterTransition
和 popExitTransition
建立自訂轉場效果。套用至 NavHost
時,這些修飾符可讓您定義進入和退出畫面的動畫效果。您可以使用這些動畫建立各種效果,例如縮放、淡入/淡出或滑動。
在本範例中,scaleOut
會在 popExitTransition
中使用,在使用者返回時縮小離開的畫面。此外,transformOrigin
參數會決定要以哪一點為基準來縮小動畫。根據預設,這會是畫面的中心點 (0.5f, 0.5f
)。
您可以調整這個值,用不同點當做縮放動畫的原點。
NavHost( navController = navController, startDestination = Home, popExitTransition = { scaleOut( targetScale = 0.9f, transformOrigin = TransformOrigin(pivotFractionX = 0.5f, pivotFractionY = 0.5f) ) }, popEnterTransition = { EnterTransition.None }, modifier = modifier, )
這段程式碼會產生下列結果:
popEnterTransition
和 popExitTransition
專門控制返回堆疊彈出時的動畫,例如返回手勢。您也可以使用 enterTransition
和 exitTransition
,為一般進入和離開的可組合函式定義動畫,不只是預測返回手勢。如果只設定 enterTransition
和 exitTransition
,這些會用於一般導覽和彈出返回堆疊。不過,使用 popEnterTransition
和 popExitTransition
可為返回導覽建立不同的動畫。
與共用元素轉換整合
共用元素轉換會在具有共用內容的可組合函式之間,提供流暢的視覺連結,通常用於導覽。
如要搭配 Navigation Compose 使用共用元素,請參閱「支援預測返回手勢的共用元素」。
支援 Material Compose 元件的預測返回手勢
Material Design Compose 程式庫中的許多元件都經過設計,可與預測返回手勢順暢搭配運作。如要在這些元件中啟用預測返回動畫,請在專案中加入最新的 Material3 依附元件 (androidx.compose.material3:material3-*:1.3.0
以上版本)。
支援預測返回動畫的 Material 元件包括:
SearchBar
ModalBottomSheet
ModalDrawerSheet/DismissibleDrawerSheet
ModalNavigationDrawer/DismissibleNavigationDrawer
SearchBar
和 ModalBottomSheet
會自動顯示預測返回手勢動畫。ModalNavigationDrawer
、ModalDrawerSheet
、DismissibleDrawerSheet
和 DismissibleNavigationDrawer
需要將 drawerState
傳遞至各自的表單內容可組合函式。
測試預測返回手勢動畫
如果您仍使用 Android 13 或 Android 14,可以測試返回主畫面動畫。
如要測試這個動畫,請按照下列步驟操作:
- 在裝置上,依序前往「設定」>「系統」>「開發人員選項」。
- 選取「預測返回操作動畫」。
- 啟動更新後的應用程式,然後使用返回手勢查看實際運作情形。
在 Android 15 以上版本中,這項功能預設為啟用。