내비게이션 컴포넌트 개요

kosdjs·2025년 11월 17일

Android

목록 보기
27/29
  • 내비게이션은 사용자가 앱 내의 컨텐츠 조각으로 들어가거나 나오거나 또는 사이를 이동하도록 하는 상호작용을 나타냄

  • 안드로이드 Jetpack의 내비게이션 컴포넌트는 Navigation 라이브러리, Safe Args Gradle 플러그인, 앱의 내비게이션을 구현하도록 돕는 도구를 포함함, 내비게이션 컴포넌트는 간단한 버튼 클릭부터 앱 바, 내비게이션 드로어와 같은 다양한 내비게이션 사용 사례를 처리함

중요: 내비게이션 컴포넌트는 설립된 일련의 원칙들을 준수함으로써 일관되고 예측 가능한 사용자 경험을 보장합니다.

주요 개념

  • Host: 현재 내비게이션 목적지를 포함하는 UI 요소, 사용자가 앱을 탐색할 때 앱은 내비게이션 호스트 안팎으로 목적지를 교체함

  • Graph: 앱의 모든 네비게이션 목적지와 그 목적지가 어떻게 연결되는지를 정의하는 자료 구조

  • Controller: 목적지간 탐색을 관리하는 중앙 조정자, 컨트롤러는 목적지간 탐색, 딥 링크 처리, 백스택 관리 등을 위한 메소드를 제공함

  • Destination: 내비게이션 그래프의 노드, 사용자가 노드로 탐색을 하면 호스트에서 그 내용을 표시함

    • NavDestination, 일반적으로 내비게이션 그래프를 만들 때 생성됨
  • Route: 목적지와 목적지가 필요로 하는 정보를 고유적으로 식별하는 경로, 경로를 이용해 탐색하면 목적지를 반환함

    • 직렬화 가능한 모든 데이터 유형

중요: Compose, 뷰, 사용자 지정 UI 프레임워크 중 어느 것을 사용하더라도 이 개념은 항상 내비게이션을 구현할 때 적용됩니다. 하지만 이를 사용하는 구체적인 방법은 다를 수 있습니다.

혜택과 특징

  • 내비게이션 컴포넌트는 다음과 같은 혜택과 특징을 제공함
    • 애니메이션 및 전환: 애니메이션과 전환을 위한 표준화된 리소스를 제공함
    • 딥 링크: 사용자를 바로 목적지로 데려갈 수 있도록 딥 링크를 구현하고 처리할 수 있음
    • UI 패턴: 최소한의 추가 작업으로 내비게이션 드로어나 하단 내비게이션과 같은 패턴을 지원함
    • 유형 안전성: 목적지간 데이터 전송시 유형 안전성을 지원함
    • 뷰모델 지원: 그래프 목적지간 UI 관련된 데이터를 공유할 수 있도록 뷰모델의 범위를 지정할 수 있게 함
    • 프래그먼트 트랜잭션: 프래그먼트 트랜잭션을 완전히 지원하고 처리함
    • 뒤로가기: 상단의 뒤로가기 버튼과 하단의 뒤로가기 버튼을 올바르게 처리함

노트: 내비게이션 그래프를 위해 XML을 사용한다면 안드로이드 스튜디오의 Navigation Editor를 사용해 그래프를 보고 편집할 수 있습니다.

노트: 안드로이드 13에서 안드로이드 기기를 위한 내비게이션 컴포넌트와 함께 작동되는 예측 뒤로가기 탐색을 소개했습니다. 예측 뒤로가기 탐색을 가능한 한 빠르게 구현하십시오. 그렇지 않으면 사용자들이 미래의 안드로이드에서 예측 불가능한 경험을 할 수 있습니다.

환경 설정

  • 프로젝트에 내비게이션 컴포넌트를 사용하려면 앱의 build.gradle 파일에 다음과 같은 의존성을 추가해야 함
plugins {
  // 탐색 인수와 경로의 유형 안전성을 위한 코틀린 직렬화 플러그인
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.9.6"

  // Jetpack Compose 통합
  implementation("androidx.navigation:navigation-compose:$nav_version")

  // Views/Fragments 통합
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Fragments에 대한 기능 모듈 지원
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // 내비게이션 테스트
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // JSON 직렬화 라이브러리, 코틀린 직렬화 플러그인과 같이 동작함
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

원문: https://developer.android.com/guide/navigation

0개의 댓글