탐색은 사용자가 앱 내의 여러 콘텐츠를 탐색하고, 그곳에 들어갔다 나올 수 있게 하는 상호작용을 의미합니다.
Android Jetpack의 탐색 구성요소에는 탐색 라이브러리, Safe Args Gradle 플러그인, 앱 탐색을 구현하는 데 도움이 되는 도구가 포함되어 있습니다. 탐색 구성요소는 간단한 버튼 클릭부터 앱 바 및 탐색 창과 같은 좀 더 복잡한 패턴에 이르기까지 다양한 탐색 사용 사례를 처리합니다.
주요 개념
다음 표에는 탐색의 주요 개념과 이를 구현하는 데 사용하는 기본 유형이 간략하게 나와 있습니다.
개념 |
목적 |
유형 |
---|---|---|
호스트 |
현재 탐색 대상이 포함된 UI 요소입니다. 즉, 사용자가 앱을 탐색할 때 앱은 기본적으로 탐색 호스트 안팎으로 대상을 전환합니다. |
|
그래프 |
앱 내의 모든 탐색 대상과 연결 방법을 정의하는 데이터 구조입니다. |
|
컨트롤러 |
대상 간 탐색을 관리하는 중앙 코디네이터입니다. 컨트롤러는 대상 간 탐색, 딥 링크 처리, 백 스택 관리 등의 작업을 위한 메서드를 제공합니다. |
|
목적지 |
탐색 그래프의 노드입니다. 사용자가 이 노드로 이동하면 호스트가 콘텐츠를 표시합니다. |
일반적으로 탐색 그래프를 구성할 때 생성됩니다. |
경로 |
대상과 필요한 데이터를 고유하게 식별합니다. 경로를 사용하여 탐색할 수 있습니다. 경로를 통해 목적지로 이동할 수 있습니다. |
직렬화 가능한 모든 데이터 유형입니다. |
장점 및 기능
탐색 구성요소는 다음을 포함하여 여러 다른 장점과 기능을 제공합니다.
- 애니메이션 및 전환: 애니메이션 및 전환에 표준화된 리소스를 제공합니다.
- 딥 링크: 사용자를 대상으로 직접 안내하는 딥 링크를 구현하고 처리합니다.
- UI 패턴: 최소한의 추가 작업으로 탐색 창 및 하단 탐색과 같은 패턴을 지원합니다.
- 유형 안전성: 유형 안전성을 사용하여 대상 간에 데이터를 전달하는 기능 지원이 포함됩니다.
- ViewModel 지원:
ViewModel
의 범위를 탐색 그래프로 지정하여 그래프 대상 간에 UI 관련 데이터를 공유할 수 있습니다. - 프래그먼트 트랜잭션: 프래그먼트 트랜잭션을 완전히 지원하고 처리합니다.
- 뒤로 및 위로: 기본적으로 뒤로 및 위로 작업을 올바르게 처리합니다.
환경 설정
프로젝트에 탐색 지원을 포함하려면 앱의 build.gradle
파일에 다음 종속 항목을 추가합니다.
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.8.5" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.5" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
다른 아키텍처 구성요소를 프로젝트에 추가하는 방법에 관한 자세한 내용은 프로젝트에 구성요소 추가를 참고하세요.
다음 단계
탐색 구성요소와 관련된 추가적인 문서와 리소스는 다음 리소스를 참고하세요.
자세한 가이드
탐색 호스트 및 NavController
를 구현하는 방법과 Compose 및 기타 UI 프레임워크와 상호작용하는 방법에 관한 자세한 내용은 다음 가이드를 참고하세요.
- 탐색 컨트롤러 만들기:
NavController
를 만드는 방법을 간략하게 설명합니다. - 탐색 그래프 만들기: 탐색 호스트와 탐색 그래프를 만드는 방법을 자세히 설명합니다.
- 대상으로 이동:
NavController
를 사용하여 그래프에서 대상 간에 이동하는 방법을 보여줍니다.
Codelab
동영상
- 탐색 구성요소 탐색하기
- 단일 활동으로 이동하기 위한 10가지 권장사항
- 단일 활동: 왜, 언제, 어떻게 (Android Dev Summit '18)
- Android Jetpack: 탐색 컨트롤러를 사용하여 UI 탐색 관리(Google I/O '18)