탐색

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

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

주요 개념

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

개념

목적

유형

호스트

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

그래프

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

NavGraph

컨트롤러

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

NavController

장점 및 기능

탐색 구성요소는 다음을 포함한 여러 가지 이점과 기능을 제공합니다.

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

환경 설정

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

Groovy

dependencies {
  def nav_version = "2.5.3"

  // 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.5.3"

  // 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

동영상

샘플