탐색은 사용자가 앱 내의 여러 콘텐츠를 탐색하고, 그곳에 들어갔다 나올 수 있게 하는 상호작용을 의미합니다. Android Jetpack의 탐색 구성요소는 단순한 버튼 클릭해서 좀 더 복잡한 패턴(앱바, 탐색 창)에 이르기까지 여러 가지 탐색을 구현하도록 도와줍니다. 탐색 구성요소는 기존의 원칙을 준수하여 일관적이고 예측 가능한 사용자 환경을 보장합니다.
탐색 구성요소는 세 가지 주요 부분으로 구성되는데, 그 내용은 아래와 같습니다.
- 탐색 그래프: 모든 탐색 관련 정보가 하나의 중심 위치에 모여 있는 XML 리소스입니다. 여기에는 대상이라고 부르는 앱 내의 모든 개별적 콘텐츠 영역과 사용자가 앱에서 갈 수 있는 모든 이용 가능한 경로가 포함됩니다.
NavHost
: 탐색 그래프에서 대상을 표시하는 빈 컨테이너입니다. 대상 구성요소에는 프래그먼트 대상을 표시하는 기본NavHost
구현인NavHostFragment
가 포함됩니다.NavController
:NavHost
에서 앱 탐색을 관리하는 객체입니다.NavController
는 사용자가 앱 내에서 이동할 때NavHost
에서 대상 콘텐츠의 전환을 오케스트레이션합니다.
앱을 탐색하는 동안 탐색 그래프에서 특정 경로를 따라 이동할지, 특정 대상으로 직접 이동할지 NavController
에게 전달합니다. 그러면 NavController
가 NavHost
에 적절한 대상을 표시합니다.
대상 구성요소는 다음을 포함한 여러 가지 장점이 있습니다.
- 프래그먼트 트랜잭션 처리.
- 기본적으로 '위로'와 '뒤로' 작업을 올바르게 처리.
- 애니메이션과 전환에 표준화된 리소스 제공.
- 딥 링크 구현 및 처리.
- 최소한의 추가 작업으로 탐색 UI 패턴(예: 탐색 창, 하단 탐색) 포함.
- Safe Args - 대상 사이에서 데이터를 탐색하고 전달할 때 유형 안정성을 제공하는 그래프 플러그인입니다.
ViewModel
지원 - 탐색 그래프에 대한ViewModel
을 확인해 그래프 대상 사이에 UI 관련 데이터를 공유합니다.
또한 Android Studio의 Navigation Editor를 사용하여 탐색 그래프를 확인하고 편집할 수 있습니다.
다음 단계
탐색 구성요소와 관련된 추가적인 문서와 리소스는 다음을 참조하세요.
시작하기
추가적인 주제
- 탐색 원리
- 다양한 폼 팩터를 위한 디자인
- 동작 탐색
- 탐색 그래프 디자인
- 중첩 그래프
- 전체 작업
- 조건부 탐색
- 대상 간 데이터 전달
- 대상의 딥 링크 만들기
- 대상 간 전환 애니메이션 처리
- NavigationUI로 UI 구성요소 업데이트
- 탭으로 스와이프 뷰 만들기
- 탐색 구성요소와 프로그래밍 방식으로 상호작용
- 탐색 테스트
- 새로운 대상 유형 추가
- 맞춤형 뒤로 탐색 기능 제공
- 탐색 구성요소로 마이그레이션