이미 앱을 새로운 System Back API로 이전한 경우 뒤로 탐색 예측을 선택하여 인앱 애니메이션을 자동으로 수신하고 맞춤 전환도 지원할 수 있습니다.
내장된 인앱 애니메이션 지원 추가
선택 후에는 앱에 홈으로 돌아가기, 교차 활동 및 교차 작업을 위한 애니메이션이 표시됩니다.
Material 구성요소 종속 항목을 MDC Android v1.10.0으로 업그레이드하여 다음과 같은 Material 구성요소 애니메이션을 받을 수도 있습니다.
이 동영상은 Android 설정 앱을 사용하여 교차 활동 및 홈으로의 이동을 위한 뒤로 탐색 예측 애니메이션의 간단한 예를 보여줍니다.
- 애니메이션에서 사용자는 뒤로 스와이프하여 이전 설정 화면으로 돌아갑니다(교차 활동 애니메이션의 예).
- 이제 이전 화면에서 사용자가 두 번째로 뒤로 스와이프하기 시작하면 배경화면으로 홈 화면의 미리보기가 표시됩니다. 이는 홈으로 돌아가기 애니메이션의 예입니다.
- 사용자가 계속해서 오른쪽으로 스와이프하면서 홈 화면의 아이콘으로 축소되는 애니메이션을 보여줍니다.
- 이제 사용자가 홈 화면으로 완전히 돌아왔습니다.
맞춤 인앱 전환 및 애니메이션 추가
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의 나가기 애니메이션입니다.