기본 제공 및 맞춤 뒤로 탐색 예측 애니메이션 지원 추가

이미 앱을 새로운 System Back API로 이전한 경우 뒤로 탐색 예측을 선택하여 인앱 애니메이션을 자동으로 수신하고 맞춤 전환도 지원할 수 있습니다.

내장된 인앱 애니메이션 지원 추가

동영상: 뒤로 탐색 예측 애니메이션

선택 후에는 앱에 홈으로 돌아가기, 교차 활동 및 교차 작업을 위한 애니메이션이 표시됩니다.

Material 구성요소 종속 항목을 MDC Android v1.10.0으로 업그레이드하여 다음과 같은 Material 구성요소 애니메이션을 받을 수도 있습니다.

이 동영상은 Android 설정 앱을 사용하여 교차 활동 및 홈으로의 이동을 위한 뒤로 탐색 예측 애니메이션의 간단한 예를 보여줍니다.

  1. 애니메이션에서 사용자는 뒤로 스와이프하여 이전 설정 화면으로 돌아갑니다(교차 활동 애니메이션의 예).
  2. 이제 이전 화면에서 사용자가 두 번째로 뒤로 스와이프하기 시작하면 배경화면으로 홈 화면의 미리보기가 표시됩니다. 이는 홈으로 돌아가기 애니메이션의 예입니다.
  3. 사용자가 계속해서 오른쪽으로 스와이프하면서 홈 화면의 아이콘으로 축소되는 애니메이션을 보여줍니다.
  4. 이제 사용자가 홈 화면으로 완전히 돌아왔습니다.

뒤로 탐색 예측 지원 자세히 알아보기

맞춤 인앱 전환 및 애니메이션 추가

Android 14에서는 앱의 맞춤 순간을 위한 맞춤 인앱 전환 및 애니메이션을 만들 수 있습니다.

일련의 뒤로 탐색 예측 진행 API를 사용하여 맞춤 인앱 전환 및 애니메이션을 개발합니다.

AndroidX 활동 1.8.0-alpha01 이상에서는 앱의 뒤로 탐색 예측 동작에 맞춤 전환을 추가할 수 있습니다. OnBackPressedCallback 내에 사용자가 뒤로 스와이프하는 동안 객체에 애니메이션을 적용하는 handleOnBackProgressed, handleOnBackCancelled, handleOnBackStarted 메서드를 도입했습니다. 새 시스템 애니메이션 또는 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를 사용할 것으로 예상되지만 Android 14 개발자 프리뷰 1 이상에서 테스트할 수 있는 OnBackAnimationCallback 내에도 유사한 플랫폼 API가 있습니다.

Android 14 이상에서 맞춤 활동 전환 추가

Android 14 이상에서 맞춤 활동 전환이 뒤로 탐색 예측을 지원하도록 하려면 overridePendingTransition 대신 overrideActivityTransition을 사용하면 됩니다. 즉, 사용자가 뒤로 스와이프하면 전환 애니메이션이 재생됩니다.

작동 방식의 예를 제공하기 위해 백 스택의 활동 A 위에 활동 B가 있는 시나리오를 생각해 보세요. 맞춤 활동 애니메이션은 다음과 같은 방식으로 처리합니다.

  • 활동 B의 onCreate 메서드 내에서 전환 열기 또는 닫기를 호출합니다.
  • 사용자가 활동 B로 이동하면 OVERRIDE_TRANSITION_OPEN을 사용합니다. 사용자가 스와이프하여 활동 A로 다시 이동하는 경우 OVERRIDE_TRANSITION_CLOSE를 사용합니다.
  • OVERRIDE_TRANSITION_CLOSE를 지정하면 enterAnim은 활동 A의 들어가기 애니메이션이고 exitAnim은 활동 B의 나가기 애니메이션입니다.