탐색

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

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

주요 개념

다음 표에서는 탐색의 세 가지 주요 개념과 이를 구현하는 데 사용하는 기본 유형을 간략하게 설명합니다.

개념

목적

유형

호스트

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

그래프

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

NavGraph

컨트롤러

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

NavController

장점 및 기능

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

  • 애니메이션 및 전환: 애니메이션 및 전환에 표준화된 리소스를 제공합니다.
  • 딥 링크: 사용자를 대상으로 직접 안내하는 딥 링크를 구현하고 처리합니다.
  • UI 패턴: 최소한의 추가 작업으로 탐색 창 및 하단 탐색과 같은 패턴을 지원합니다.
  • 유형 안전성: 대상 간에 데이터를 탐색하고 전달할 때 유형 안전성을 제공하는 Safe Args Gradle 플러그인이 포함됩니다.
  • ViewModel 지원: ViewModel의 범위를 탐색 그래프로 지정하여 그래프 대상 간에 UI 관련 데이터를 공유할 수 있습니다.
  • 프래그먼트 트랜잭션: 프래그먼트 트랜잭션을 완전히 지원하고 처리합니다.
  • 뒤로 및 위로: 기본적으로 뒤로 및 위로 작업을 올바르게 처리합니다.

환경 설정

프로젝트에 탐색 지원을 포함하려면 앱의 build.gradle 파일에 다음 종속 항목을 추가합니다.

Groovy

dependencies {
  def nav_version = "2.7.7"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

  // Feature module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"
}

Kotlin

dependencies {
  val nav_version = "2.7.7"

  // Java language implementation
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Kotlin
  implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
  implementation("androidx.navigation:navigation-ui-ktx:$nav_version")

  // Feature module Support
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // Jetpack Compose Integration
  implementation("androidx.navigation:navigation-compose:$nav_version")
}

다른 아키텍처 구성요소를 프로젝트에 추가하는 방법에 관한 자세한 내용은 프로젝트에 구성요소 추가를 참고하세요.

다음 단계

탐색 구성요소와 관련된 추가적인 문서와 리소스는 다음 리소스를 참고하세요.

자세한 가이드

탐색 호스트 및 NavController를 구현하는 방법과 Compose 및 기타 UI 프레임워크와 상호작용하는 방법에 관한 자세한 내용은 다음 가이드를 참고하세요.

Codelab

동영상

샘플