탐색

탐색은 사용자가 앱 내의 여러 콘텐츠를 탐색하고, 그곳에 들어갔다 나올 수 있게 하는 상호작용을 의미합니다.

Android Jetpack의 탐색 구성요소에는 탐색 라이브러리, Safe Args Gradle 플러그인, 앱 탐색을 구현하는 데 도움이 되는 도구가 포함되어 있습니다. 탐색 구성요소는 간단한 버튼 클릭부터 앱 바 및 탐색 창과 같은 좀 더 복잡한 패턴에 이르기까지 다양한 탐색 사용 사례를 처리합니다.

주요 개념

다음 표에는 탐색의 주요 개념과 이를 구현하는 데 사용하는 기본 유형이 간략하게 나와 있습니다.

개념

목적

유형

호스트

현재 탐색 대상이 포함된 UI 요소입니다. 즉, 사용자가 앱을 탐색할 때 앱은 기본적으로 탐색 호스트 안팎으로 대상을 전환합니다.

그래프

앱 내의 모든 탐색 대상과 연결 방법을 정의하는 데이터 구조입니다.

NavGraph

컨트롤러

대상 간 탐색을 관리하는 중앙 코디네이터입니다. 컨트롤러는 대상 간 탐색, 딥 링크 처리, 백 스택 관리 등의 작업을 위한 메서드를 제공합니다.

NavController

목적지

탐색 그래프의 노드입니다. 사용자가 이 노드로 이동하면 호스트가 콘텐츠를 표시합니다.

NavDestination

일반적으로 탐색 그래프를 구성할 때 생성됩니다.

경로

대상과 필요한 데이터를 고유하게 식별합니다.

경로를 사용하여 탐색할 수 있습니다. 경로를 통해 목적지로 이동할 수 있습니다.

직렬화 가능한 모든 데이터 유형입니다.

장점 및 기능

탐색 구성요소는 다음을 포함하여 여러 다른 장점과 기능을 제공합니다.

  • 애니메이션 및 전환: 애니메이션 및 전환에 표준화된 리소스를 제공합니다.
  • 딥 링크: 사용자를 대상으로 직접 안내하는 딥 링크를 구현하고 처리합니다.
  • 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 프레임워크와 상호작용하는 방법에 관한 자세한 내용은 다음 가이드를 참고하세요.

Codelab

동영상

샘플