본문 바로가기
Android

[Android/Kotlin] Jetpack Navigation이란?

by 옹구스투스 2022. 4. 18.
반응형

 


Jetpack Navigation이란?


Jetpack Navigation이란?

네비게이션이란 하나의 화면에서 다른 화면으로 이동하는 것을 말한다.

기존에는 intent나 fragment Transaction으로 네비게이션(화면 이동)을 구현하였는데,

화면이 많아지면 네비게이션은 점점 복잡해진다.

이러한 네비게이션을 Jetpack 라이브러리에 Navigation 컴포넌트를 이용하여 쉽게 구현할 수 있다.

(이하 Navigation)

주요 기능

  • Simplified setup for common navigation patterns
  • Handles backstack
  • Automates fragment transactions
  • Type safe argument passing
  • Handles transition animations
  • Simplified deep linking
  • Centralizes and visualizes navigation

 

Navigation을 이용한 화면 이동은 Fragment, Activity, 심지어 라이브러리를 확장하면 커스텀 뷰에서도 사용이 가능하다.

일반적으로 Navigation은 Fragment의 이동 관리에 많이 쓰이며 SingleActivity - Multi Fragment 구조에서 유용하다.

또한 아래의 뷰들과 연결도 지원한다.

  • Options Menus
  • Bottom Navigation
  • Navigation View
  • Navigation Drawer
  • ActionBar
  • Toolbar
  • Collapsing Toolbar

 

구성 요소

  • Navigation Graph
  • NavHostFragment
  • NavController

대표적으로 이 세 가지가 있다.

 

Navigation Graph(New Resource)

  • Navigation Graph는 새로운 리소스 타입이다
  • xml 파일 형태로 탐색에 관련된 정보를 포함하고 중심화한다.
  • AndroidStudio 3.3 이상에서 이용 가능하다.

Navigation 정보들을 한 곳에 모은 XML 리소스로, 앱에서 진행될 수 있는 모든 흐름을 보여주고 앱 내 Fragment를 한눈에 확인하기 쉽다.

Navigation Graph 인터페이스

위의 인터페이스에서 우측에 있는 정보들은 액션(화살표)를 클릭하면 볼 수 있는 정보들이다.

데이터, 트랜잭션, 애니메이션, 백 스택 등을 조정한다.

화면을 클릭하면 딥링크 url 등을 볼 수 있다.

 

NavHostFragment(Layout)

  • 프래그먼트를 담는 창
  • Navigation Graph에서 대상을 표시하는 빈 컨테이너

액티비티의 FragmentContainerView에 android:name 속성으로 설정한다.

자동 완성이 안 되니 직접..!

 

 

NavController(Fragment)

  • Java/Kotlin 코드로 사용
  • NavHostFragment는 개별적으로 NavController를 가지고 있음
  • 실질적으로 화면 이동이 이루어지는 부분
  • xml 아이디로 원하는 화면(fragment)으로 이동 가능
  • 하지만 SafeArgs Plugin 사용하여 이동하는 것을 권한

 

Navigation 장점

  • Fragment의 transaction 처리
  • Up & Back 동작을 올바르게 처리
  • 화면 전환에 대한 표준화된 animation 리소스
  • Bottom Navigation 같은 요소들을 최소한의 추가 작업으로 구현
  • Safe Args
    • 대상 사이에서 데이터를 탐색하고 전달할 때 안정성을 제공하는 Graph 플러그인
  • ViewModel
    • Navigation Graph에 대한 ViewModel을 확인해 그래프 대상 사이에 UI 관련 데이터를 공유
    •  

 

Next

  1. Navigation으로 Fragment 이동 관리하기
  2. 내가 만든 앱 Fragment Transaction에서 Navigation으로 Migration하기 

References

SSAFY 07th Mobile Track

https://www.youtube.com/watch?v=Y0Cs2MQxyIs&t=2s 

https://developer.android.com/guide/navigation/navigation-principles

 

탐색 원리  |  Android 개발자  |  Android Developers

탐색 원리 다양한 화면 및 앱 간 탐색은 사용자 환경의 핵심 부분입니다. 다음 원칙은 앱 전체에서 일관되고 직관적인 사용자 환경의 기준을 설정합니다. 탐색 구성요소는 이러한 원칙을 기본적

developer.android.com

 

반응형

댓글