Android Jetpack: Introducing Navigation Component

[음악 재생] LYLA FUJIWARA : 앱 주위를 탐색하여 한 화면에서 다른 화면으로 이동하는 것을 의미하며, 안드로이드 개발의 절대적으로 기본적인 부분입니다 역사적으로 의도 또는 조각을 사용하여이 작업을 수행 할 수 있습니다

버튼을 클릭하는 것과 같은 간단한 경우, 충분히 쉬웠다 하지만 뭔가를 조금 더하고 싶다면 어떻게 할까? 복잡한? 예를 들어 하단 탐색과 같은 공통 패턴을 연결합니다 당신은 당신의 아래쪽 네비게이션 보기가 실제로 탐색 할뿐만 아니라 올바른 버튼을 강조 표시합니다 아, 그리고 그것은 백 스택을 일관된 방식으로 처리합니다 사용자가 길을 잃거나 혼란스럽지 않게됩니다

이러한 경우는 새 탐색 요소 빛난다 탐색 요소는 컬렉션입니다 라이브러리, 플러그인 및 툴링 Android 탐색을 단순화합니다 Bottom과 같은 일반적인 패턴을 설정하는 것을 넘어 네비게이션이 더 쉽고, 컴포넌트가 백 스택을 처리하고, 프래그먼트 트랜잭션, 인수 전달, 탐색 기반 애니메이션 및 딥 링크를 제공합니다 중요한 것은이 네비게이션 정보를 모으는 것입니다

앱의 시각화 된 위치에 배치합니다 네비게이션 그래프 네비게이션 구성 요소가 작동합니다 파편과 활동으로 상자의 다른 화면에서 작동하도록 라이브러리를 확장 할 수도 있습니다 사용자 정의보기와 같은 구현 탐색 구성 요소의 몇 가지 예를 살펴 보겠습니다

하나의 활동이 스와핑 된 행동 여러 조각 고려해야 할 이유가 궁금하다면 싱글 액티비티 모델, Ian Link의 탁월한 토크, 내가 노트에 링크 한 승인 탐색 구성 요소에 대해 생각하는 한 가지 방법 함께 작동하는 세 가지 주요 부분이 있다는 것입니다 조화롭게 네비게이션 그래프, NavHostFragment, 및 NavController

탐색 그래프는 새로운 자원 유형입니다 정보를 포함하고 중앙 집중화하는 XML 파일입니다 네비게이션 관련 이제이 정보를 시각화 할 수 있습니다 Android에서 사용할 수있는 새로운 탐색 편집기에서 스튜디오 3

3 이것을 생성하는 것은 그래픽 편집기이며, 잘, 네비게이션 그래프 이러한 각 스크린을 목적지라고하며, 또는 네비게이션 할 수있는 장소 이 예에서는 모두 조각입니다 이제이 화살을 여기 행동이라고 부릅니다

그들은 다른 경로를 나타냅니다 사용자가 귀하의 앱을 사용할 수 있음을 나타냅니다 액션 중 하나를 클릭하면, 당신은 임베디드 정보 전체를 볼 수 있습니다 목적지간에 전달되는 데이터, 트랜지션 애니메이션, 백 스택 조작 등이 포함됩니다 목적지를 클릭하면 딥 링크 같은 것을 볼 수 있습니다

URL 및 시작 옵션 이것은 모두 그래프의 XML의 일부입니다 좋아요 다음에는 NavHostFragment가 있습니다 이것은 레이아웃에 추가 할 조각 위젯입니다

조각 탐색을하고 있다고 가정합니다 그것은 기본적으로 안으로 및 밖으로 교환하는 창 포함 된 다른 단편 대상 네비게이션 그래프에서 퍼즐의 마지막 부분은 NavController입니다 각 NavHostFragment에는 NavController가 있습니다 Kotlin 또는 Java 코드에서 사용할 것입니다

그리고 이것이 실제로 네비게이션에 지시하는 것입니다 일어난다 그래서 이런 코드를 작성하면, 그러면 NavController는이 탐색 작업을 수행합니다 그 정보를 바탕으로 탐색 그래프에 있었고 궁극적으로 NavHost 조각에 표시되는 조각을 바꿉니다 이제 여기에 액션의 XML ID를 사용하고 있습니다

따라 가기위한 액션 화살표를 지정하려면, 하지만 더 나은 방법은 탐색을 사용하는 것입니다 구성 요소의 SafeArgs 플러그인 SafeArgs 플러그인은 코드를 생성합니다 타입 안전 네비게이션을 사용할 수있게 해준다 인수 전달

먼저 코드에 Gradle 플러그인을 추가합니다 그러면 네비게이션 그래프를 기반으로 클래스가 생성됩니다 이 방향 수업을 만들거야 액션이있는 모든 대상에 대해 모든 목적지에 대해 Args 클래스를 작성합니다 인수가있다

원래 내비게이션 진술서를 가져 가면, 생성 된 클래스에서 스왑 할 수 있습니다 너는 이렇게 생겼어 XML ID로 동작을 참조하는 대신, 당신은 당신에게 행동이 있는지 확인하고 있습니다 실제로 목적지와 관련이 있습니다 액션의 인수를 설정할 수도 있습니다

잘못된 유형으로 전달하면 코드가 컴파일되지 않습니다 당신이 통과 한 논점을 얻는 것은 쉽습니다 GeneratedArgs 클래스를 사용하기 만하면됩니다 당신은 타입에 대해서만 안전한 접근을 할 수 있습니다 올바르게 명명 된 인수 어제의 핵심 가치 쌍에 대해 걱정할 필요가 없습니다

그래서 간단한 탐색이었습니다 아래쪽 탐색을 설정하는 것에 대해 이야기 해 봅시다 탐색 구성 요소에는 다음이 포함됩니다 Java 및 KTX의 추가 탐색 UI 라이브러리 지원이있는 Kotlin의 확장 옵션 메뉴, 하단 탐색, 탐색 보기 및 탐색 서랍 또한 작업 표시 줄, 도구 모음, 축소 도구 모음

우리의 아래쪽 nav를 위해, 당신은 아래쪽 nav를자를 것입니다 XML을 정상적으로 처리합니다 ID가있는 XML 메뉴를 만들 수도 있습니다 대상의 XML ID와 일치하는 아래쪽 탐색을 원하는 네비게이션 그래프 가기 위해 그런 다음 탐색 UI를 사용하여 나머지 부분을 연결합니다

Kotlin에서는이 편리한 확장 기능을 사용합니다 이 한 줄의 코드에는 NavController가 있습니다 실제 탐색을 처리하고 머티리얼 디자인 모범 사례를 반드시 따라야합니다 백 스택 관리가 진행됨에 따라 그 위에, 그것은 강조 표시를 처리합니다 올바른 하단 버튼

이제 우리는 단지 몇 가지 파트만을 탐구했습니다 네비게이션 구성 요소의 탐색에 대한 더 깊은 트레킹을 위해, 코드 랩과 문서를 확인하십시오 모두 아래에 링크되어 있습니다 해피 코딩 및 행복 탐색