Google I/O 2025 'Add Predictive Back animations' 코드랩을 기반으로 작성되었습니다.

What is predictive back?
predictive back은 gesture에 의한 뒤로 가기 동작에서 이동될 화면을 '미리 보여주는 기능'입니다. 첨부된 자료처럼 back gesture가 서서히 진행됨과 동시에 이전 화면이 서서히 보이는 것을 볼 수 있습니다.
문서에 따르면 이 기능으로 유저는 뒤로 가기 동작의 진행 여부를 미리 판단할 수 있게 되고, 이는 좋은 사용자 경험으로 이어진다고 말합니다. 앱 첫 화면에서 사용된다면 안드로이드 홈 화면으로 실수로 이탈하는 유저를 잡을 수 있는 유용한 기능이 될 것 같습니다.
How to add predictive back support
predictive back 기능을 추가하는 것은 간단합니다.
<application
android:name=".SocialApp"
...
android:enableOnBackInvokedCallback="true">
<activity
android:name=".MainActivity"
android:exported="true"
...>
AndroidManifest.xml 파일에서 android:enableOnBackInvokedCallback 속성을 true로 설정하면 됩니다.
단, predictive back 기능은 Android 15 이상 버전부터 제공됩니다.
예외적으로 Android 13, 14 버전은 개발자 설정에서 Predictive back animations 속성을 On 하면 적용할 수 있습니다.

Custom in-app animations
predictive back의 animation은 custom이 가능합니다. 코드랩에서는 Compose Navigation 구조에서 predictive back animation을 변경하는 예제를 소개합니다.
이 글의 상단 첨부된 이미지를 보면 fadeOut animation으로 동작하는 것을 확인할 수 있습니다. 그 이유는 NavHost의 함수의 exitTransition의 기본 값이 fadeOut으로 설정되어 있기 때문입니다.
NavHost(
...
popExitTransition = {
scaleOut(
targetScale = 0.9F,
transformOrigin = TransformOrigin(pivotFractionX = 0.5f, pivotFractionY = 0.5f)
)
},
...
)
예제에서는 NavHost의 popExitTrasition을 scaleOut animation으로 설정했습니다. 결과를 보면 fadeOut에서 scaleOut으로 animation이 변경되었음을 확인할 수 있습니다.

Do not intercept back at the root
predictive back을 사용하기 전 고려할 점이 있습니다.
BackHandler, PredictiveBackHandler, OnBackPressedCallback or OnBackInvokedCallback을 사용하고 있다면 predictive back 액션을 가로채게 되면서 predictive back이 동작하지 않게 됩니다.
따라서 유저의 뒤로 가기 동작을 추적을 해야 한다면 Activity, Fragment의 lifecycle method 또는 addOnDestinationChangedListener 등 화면 전환이 된 후 발생되는 이벤트를 사용하라고 문서는 안내합니다.
하지만 서비스를 구현하다 보면 화면 이탈 방지 팝업처럼, 뒤로 가기 동작을 사전에 탐지해서 막아야 하는 케이스가 있을 수 있습니다. 이런 케이스에서는 OnBackInvokedCallback의 enable 상태를 관리해 주면 됩니다.
예를 들어, 사용자가 데이터 양식을 채우면 OnBackInvokedCallback을 활성화해서 뒤로가기 동작을 막고 팝업을 표시합니다.
만약 데이터가 비워지면 OnBackInvokedCallback 비활성화하여 predictive back이 사용될 수 있도록 합니다.
https://developer.android.com/guide/navigation/custom-back/predictive-back-gesture#best-practices

'Android > Google IO' 카테고리의 다른 글
| [Android] Google I/O 2025 - Handle edge-to-edge enforcements in Android 15 (2) | 2025.06.15 |
|---|