내비게이션은 사용자가 앱 내의 컨텐츠 조각으로 들어가거나 나오거나 또는 사이를 이동하도록 하는 상호작용을 나타냄
안드로이드 Jetpack의 내비게이션 컴포넌트는 Navigation 라이브러리, Safe Args Gradle 플러그인, 앱의 내비게이션을 구현하도록 돕는 도구를 포함함, 내비게이션 컴포넌트는 간단한 버튼 클릭부터 앱 바, 내비게이션 드로어와 같은 다양한 내비게이션 사용 사례를 처리함
중요: 내비게이션 컴포넌트는 설립된 일련의 원칙들을 준수함으로써 일관되고 예측 가능한 사용자 경험을 보장합니다.
Host: 현재 내비게이션 목적지를 포함하는 UI 요소, 사용자가 앱을 탐색할 때 앱은 내비게이션 호스트 안팎으로 목적지를 교체함
Graph: 앱의 모든 네비게이션 목적지와 그 목적지가 어떻게 연결되는지를 정의하는 자료 구조
Controller: 목적지간 탐색을 관리하는 중앙 조정자, 컨트롤러는 목적지간 탐색, 딥 링크 처리, 백스택 관리 등을 위한 메소드를 제공함
Destination: 내비게이션 그래프의 노드, 사용자가 노드로 탐색을 하면 호스트에서 그 내용을 표시함
Route: 목적지와 목적지가 필요로 하는 정보를 고유적으로 식별하는 경로, 경로를 이용해 탐색하면 목적지를 반환함
중요: Compose, 뷰, 사용자 지정 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")
}