탐색

각 사용자 여정에 맞게 개별 화면을 디자인한 후에는 세로 화면 또는 단일 화면이 몇 개 있을 수 있습니다. 이제 이러한 화면이 함께 작동하도록 디자인하는 방법과 탐색을 구현하는 방법을 결정해야 합니다.

디자인

앱 디자인 가이드라인에 명시된 대로 앱의 계층 구조를 얕고 선형으로 유지합니다.

시작하려면 앱의 런처에서 가장 일반적인 사용자 경험을 열어야 합니다. 가장 중요한 콘텐츠를 상단에 배치하여 각 사용자 여정을 설계하세요. 수직 컨테이너의 경우 하단을 사용하여 일반적이지 않은 다른 사용자 여정 및 설정에 연결합니다.

그림 1. 가장 중요한 콘텐츠를 세로 컨테이너의 상단에 유지합니다.

사용자가 화면 중 하나에 들어가면 스와이프하여 닫기 동작을 사용하여 백 스택으로 이동할 수 있어야 합니다.

탐색 구현

탐색을 구현하는 경우 다음 섹션에서 설명하는 세 가지 옵션이 있습니다.

  • 활동만(권장됨)
  • 활동 및 프래그먼트
  • Jetpack Navigation

활동만

세로 화면은 일반적으로 깊이가 한 수준이므로 프래그먼트를 사용하지 않고 활동을 사용하여 모든 화면을 구현할 수 있습니다.

이 방법을 적극 권장합니다. 코드가 간소화되고 활동은 스와이프하여 닫기를 자동으로 지원합니다. 이렇게 하면 대기 모드도 더 간단하게 구현할 수 있습니다.

참고: 프래그먼트를 사용하지 않는다면 활동이 ComponentActivity에서 상속받도록 하세요. 다른 활동 유형은 Wear OS에 필요하지 않은 모바일 전용 UI 요소를 사용합니다.

활동 및 프래그먼트

Wear OS 앱의 활동과 함께 프래그먼트를 사용할 수 있습니다. 그러나 프래그먼트를 사용하여 얕고 평평한 아키텍처를 만드는 것에 분명한 이점이 없으므로 권장하지 않습니다.

참고: 프래그먼트를 사용 중인 경우 FragmentActivity에서 상속받도록 설정하세요. 다른 활동 유형은 Wear OS에 필요하지 않은 모바일 전용 UI 요소를 사용합니다.

Wear OS 앱에서 프래그먼트를 사용할 때 발생하는 몇 가지 문제는 다음과 같습니다.

  • 스와이프하여 닫기를 직접 구현해야 합니다. 그 외의 경우에는 사용자가 스와이프를 실행할 때 앱 전체가 종료됩니다.
  • AmbientMode를 사용하는 경우 올바르게 작동하도록 맞춤설정해야 합니다. AmbientMode는 활동에서 설정되므로 프래그먼트를 구현할 때 이를 고려해야 합니다.

프래그먼트에서 스와이프하여 닫기를 지원하려면 SwipeDismissFrameLayout 클래스에서 프래그먼트 포함 뷰를 래핑해야 합니다. 자세한 내용은 스와이프하여 닫기 동작을 참고하세요. 이렇게 하면 사용자에게 일관된 앱 환경을 제공할 수 있습니다.

참고: 프래그먼트를 사용할 때는 FragmentManager.replace 대신 FragmentManager.add를 사용하여 스와이프하여 닫기 동작을 지원하세요. 이렇게 하면 이전 프래그먼트가 스와이프되는 동안 상단 프래그먼트 아래에서 렌더링됩니다.

Jetpack Navigation

Jetpack 탐색은 Wear OS에서 작동할 수 있지만 프래그먼트와 동일한 단점이 있습니다. 개발 작업이 추가되며 Wear OS 앱의 계층 구조가 일반적으로 얕고 선형이므로 많은 이점을 제공하지 않습니다. 활동 전용 접근 방식이 가장 좋습니다.

Jetpack 탐색을 완전히 활용하려면 다음을 실행하세요.

  • 모든 프래그먼트가 SwipeDismissFrameLayout를 루트로 사용하는지 확인하고 수동으로 닫기 작업을 사용하여 탐색 그래프로 돌아갑니다.
  • 프래그먼트를 서로 겹쳐 렌더링하는 맞춤 FragmentNavigator를 구현합니다.