Android Jetpack - Navigation

jihyo·2022년 2월 16일
0

Android

목록 보기
8/17
post-thumbnail

Android Jetpcak - Navigation

앱을 탐색한다는 것은 다른 화면으로 이동한다는 것을 말한다. 보통 인텐트나 프래그먼트 트랜잭션을 통해 간단한 작업을 구현했다.

좀 더 복잡한 구현을 만들어야될 때는 어떻게 해야될까? 예를 들어, 여러 화면 전환을 위해 많이 사용되는 BottomNavigation View가 될 수 있겠다.

BottomNavigation View

이런 부분에서 탐색 컴포넌트를 사용하면 아래와 같은 장점들이 있다.

  • 일반적인 탐색 패턴에 대한 설정의 단순화
  • 구성요소가 백 스택과 프래그먼트 트랜잭션을 처리
  • 프래그먼트 트랜잭션 활성화
  • 안전한 타입의 인수 전달
  • 탐색 기반의 트랜잭션 애니메이션 처리
  • 단순화된 딥 링크 처리
  • 앱에서 모든 탐색 정보를 모으고 하나의 시각화된 자료로 모음
  • ViewModel 지원 : 탐색 그래프에 대한 ViewModel을 확인해 그래프 대상 사이에 UI 관련 데이터를 공유

Navigation Graph

  • Navigation Graph : 모든 탐색 관련 정보가 하나의 위치에 모여 있는 XML 리소스 형태로 여기에는 목적지라고 부르는 앱 내의 모든 콘텐츠 영역과 사용자가 앱에서 갈 수 있는 모든 경로가 포함된다.

NavHostFragment : 레이아웃을 추가할 Fragment이다. Navigation Graph에서 포함하는 다양한 Fragment 목적지가 교차되는 곳이다.

  • NavHost : Navigation Graph에서 목적지를 표시하는 빈 컨테이너다. 목적지 구성요소에는 프래그먼트 대상을 표시하는 기본 NavHost 구현인 NavHostFragment`가 포함된다. NavHostFragment는 개별적으로 NavController를 가지고 있다.

  • NavController : NavHost에서 앱 탐색을 관리하는 객체입니다. NavController는 사용자가 앱 내에서 이동할 때 NavHost에서 대상 콘텐츠의 전환을 오케스트레이션한다.

앱을 탐색하는 동안 탐색 그래프에서 특정 경로를 따라 이동할지, 특정 대상으로 직접 이동할지 NavController에게 전달한ㅏ. 그러면 NavControllerNavHost에 적절한 대상을 표시한다.

0개의 댓글