탐색

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

디자인

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

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

그림 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를 구현합니다.