오늘도 더 나은 코드를 작성하였습니까?

Navigation 본문

Android Jetpack Architecture/Navigation

Navigation

hik14 2021. 2. 18. 15:37

Navigation 이란

 

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

Android Jetpack의 탐색 구성요소는 단순한 버튼 클릭해서 좀 더 복잡한 패턴(앱바, 탐색 창)에 이르기까지 여러 가지 탐색을 구현하도록 도와줍니다. 탐색 구성요소는 기존의 원칙을 준수하여 일관적이고 예측 가능한 사용자 환경을 보장합니다.

 

핵심구성요소

 

1. NavGraph

-모든 탐색 관련 정보가 하나의 중심 위치에 모여 있는 XML 리소스입니다.  앱 내의 모든 개별적 콘텐츠 영역(destinations)과 사용자가 앱에서 갈 수 있는 모든 이용 가능한 경로가 포함된다.

 

2. NavHost

- navi graph에서 destinations 표시하는 empty container입니다.

- navigation component는  fragment(destinations)을 표시하는 기본 NavHost을 implement하고 있는

 NavHostFragment가 포함되었다.

 

3. NavController

- NavHost안에 app 탐색을 관리하는 객체입니다. 

- NavController는 사용자가 앱 내에서 이동할 때 NavHost에서 destination의 전환을 관리합니다

 

NavController NavGraph의 경로에 따라 NavHost에 적절한 Fragment 표기

 

장점

  • 프래그먼트 트랜잭션 처리.
  • 기본적으로 '위로'와 '뒤로' 작업을 올바르게 처리.
  • 애니메이션과 전환에 표준화된 리소스 제공.
  • 딥 링크 구현 및 처리.
  • 최소한의 추가 작업으로 탐색 UI 패턴(예: 탐색 창, 하단 탐색) 포함  (id만 일치시키면 가능함)
  • Safe Args - 대상 사이에서 데이터를 탐색하고 전달할 때 유형 안정성을 제공하는 그래프 플러그인입니다.
  • ViewModel 지원 - 탐색 그래프에 대한 ViewModel을 확인해 그래프 대상 사이에 UI 관련 데이터를 공유합니다.