1 – Android Jetpack Navigation with Kotlin

안녕하세요, 모두 Martin Baraya입니다 오늘은 Android에 대해 배울 것입니다

제트 팩 내비게이션 먼저 제트 팩 내비게이션이란 무엇입니까? 한 화면에서 다른 곳으로 이동하는 것과 같이 앱 주변을 탐색하는 데 사용되는 제트 팩 내비게이션 또 다른 그것은 안드로이드 개발의 근본적인 부분이며 그것을하는 데 사용됩니다 하단 탐색과 같은 버튼을 클릭하는 것보다 더 복잡한 작업 제트 팩 내비게이션 작동 방식에 대해 3 가지 주요 사항을 더 이해합니다 네비게이션 구성 요소의 일부로 네비게이션 그래프, nav 호스트 조각과 탐색 컨트롤러 그래서 안드로이드 jetpack을 만들기 시작하자 안드로이드 스튜디오에서 탐색하고 안드로이드 문서 노트에 의존한다면 Android Studio에서 탐색을 사용하려면 Android Studio를 사용해야합니다 3 단계 이상의 3 단계부터 시작하자 그래서 우리는 비어있는 활동을 가진 새로운 프로젝트를 시작할 것입니다

제트 팩이나 뭐든간에 당신이 실제로 그것을 선택할 수있는 위치를 선택할 수 있습니다 바탕 화면에 jetpack이라는 빈 폴더가 있고 우리는 Kotlin으로 시작할 수 있습니다 완료 후에 API 레벨을 최소로 선택하고 gradle은 빌드하는데 약간의 시간이 걸릴 것입니다 처음부터 그래 슬레 빌드가 완료되었습니다 우리는 단편이 필요합니다

단편을 선택할 수 있습니다 우리는 그것을 주요 조각이라고 부를 수있는 뷰 모델을 가진 조각 Kotlin과 잘 맞았 어 그래서 그 후에 우리는 두 조각 더 필요합니다 그래서 우리는 빈 조각을 선택하려고합니다 이 두 상자의 선택을 취소하십시오

그냥 끝내 줘 우리는 두 번째 조각을 위해 똑같은 작업을 할 것입니다 공백, 두 번째 조각 끝 실제로 우리는 메인 프래그먼트의 주요 활동과 첫 번째 프래그먼트 및 두 번째 프래그먼트로 작업 할 수있다 조각하지만 우리는 주보기 모델을 사용하지 않을 것입니다 gradle 종속성을 가지고 있으므로이 두 줄의 코드를 추가 할 것입니다

nav 버전을 사용하면 지금 동기화를 선택할 것입니다 괜찮아 그러면 우리는 철판 최상위 레벨을 선택하고 allprojects 내부에서 이 버전의 코드 안드로이드 지원 버전을 추가하여 버전 28을 지원하십시오 지금 동기화 선택하기 그래서 지금 우리는 네비게이션 그래프를 만들 것입니다이 창을 닫으십시오 그래서 내부 자원과 레이아웃, 우리가 할 주요 활동 XML 파일 내부 그래프 작업, 먼저 텍스트보기를 삭제합니다

우리가 필요로하지 않기 때문에 우리는 서랍 레이아웃을 추가 할 것입니다 우리가 선택할 부모님은 부모님과 일치합니다 우리는 그것의 ID를 추가 할 수 있습니다, 우리는 컨테이너 이름을 이제 알았습니다 우리는 서랍 안쪽에 tage 조각을 추가 할 수 있습니다 형세 alt 키를 누르면 ID가 추가되고 nav 호스트이므로 Android 이름을 추가합니다

프래그먼트 호스팅을위한 프래그먼트 (fragment)와 우리는 제로 (dp)와 함께 너비와 하이를 할 수있다 그리고 제약 레이아웃을위한이 위치는 바로 지금이 것을위한 것입니다 우리가 선택할 수 있도록 리소스 폴더 안에 탐색 그래프 탐색을 생성합니다 새로운 Android 리소스 파일에서 리소스 유형 탐색을 선택해야합니다 nav_graph라는 이름을 짓고 ok를 누릅니다

그리고 그들의 디자인 부분에 가자 이 테이프에서 우리는 다음과 같은 주요 조각을 선택할 수 있습니다 우리는이 두 줄을 추가 할 수있는 조각 안의 주된 활동으로 되돌아 간다 기본 탐색 호스트의 코드 = true 및 탐색 그래프, 경로입니다 이것은 우리가 네비게이션과 네비게이션 그래프 안에서 만든 네비게이션 그래프입니다

주요 활동으로 전환해야합니다 주요 액티비티에는 서랍 레이아웃이 필요합니다 그래서 우리는 서랍 레이아웃을위한 변수를 만들 것입니다 그런 다음 Oncreate 메서드에서 조각을 찾기 위해 변수가 필요합니다 ID 그래서 우리는 그 이름을 지원하는 조각과 동등한 가치로 호스트 할 가치가있다

관리자가 ID로 조각을 찾으면이 ID입니다 nav 호스트 조각에 대한 이름과 형변환은 null을 받아 들일 수 있습니다 호스트에서 컨트롤러를 탐색하고 호스트에서 컨트롤러를 탐색 한 다음 네비게이션 바를 제어하고 우리가 그것을 연결해야하는 서랍 레이아웃 이 ID 컨테이너와 연결된이 drawerlayout ID this this 이제 우리는 탐색 UI를 사용하여 탐색 컨트롤러와 서랍을 연결합니다 작업 표시 줄, 설정 작업 표시 줄 탐색 컨트롤러 이것은 활동을 나타냅니다 이 변수에 대한 컨트롤러와이 변수에 대한 서랍을 탐색하면 ctrl 키를 눌러 덮어 쓰기 메소드를 만들겠습니다 이 방법과 우리는 사용자가 뒤로 버튼을 누른 다음 반환 값을 탐색 UI로 변경합니다

서랍,이 서랍을 탐색하고 해당 서랍의 활동 ID를 처리합니다 메인 프래그먼트 이제 탐색 그래프 탐색으로 전환합시다 먼저 조각 두 개를 추가하고 두 번째 조각을 추가합니다 두 번째 조각이므로 탐색 그래프에서 그래픽을 만들 수 있습니다 이 좋은 것을 사용하여 연결 액션, 위대한 생각에 대해 우리는 하나의 조각에서 연결할 수 있습니다 다른이 ID를 사용하여이 작업 ID를 사용하여 연결할 수있는이 작업 ID 한 조각에서 다른 조각으로 이제 주 프래그먼트 내부의 디자인 파트로 전환 해 보겠습니다

버튼이 두 개의 버튼 사이에 연결이 두 버튼을 사용하여 이제 우리가 할 주요 조각 안의 주요 조각으로 바꾸자 onView라는 create 메소드를 덮어 씁니다 그리고이 방법은 단편들 사이를 연결하는 데 사용되었고, 그런 다음 set onclicklistener와 같은 단편과 버튼을 연결하면 펀드를 사용합니다

버튼 ID 및 행동 ID가있는 내비게이션으로 ID별로보기 여기 네비게이션,이 쪽 우리는 이것을 바꿀 필요가있는 두 번째 버튼에 대해 동일한 작업을 수행 할 수 있습니다 button2를 클릭하면 액션 메인 프래그먼트 – 제 2 프래그먼트 그건 사실 우리가 거의 마지막에 끝났어 우리가 탐색 그래프를 살펴보고 메인 라벨의 라벨을 바꿀 거라고 생각해 원하는 집이나 원하는 물건과 첫 번째 조각, 두 번째 조각 텍스트 첫 부분을 바꿀거야 텍스트를 원하는대로 변경할 수 있으므로 첫 번째와 두 번째와 같이 만들 수 있습니다

조각 우리는 텍스트를 두 번째로 변경하려고합니다 첫 번째 및 두 번째 조각에 디자인 첫 번째 조각을 위해 우리는 같은 디자인을 추가 할 수 있습니다 두 번째 조각도 마찬가지입니다 텍스트 크기를 텍스트 스타일에 추가하기 만하면됩니다 이 물건이 이것과 그것 인 것 인이 재료 이제 우리는 android studio 에뮬레이터를 사용하여 테스트 할 것입니다

첫 번째 조각을 선택하면 첫 번째 조각이 첫 번째 조각으로 이동합니다 두 번째 조각은 두 번째 조각을 선택합니다 시청 해주셔서 감사합니다

Navigation

처음에는 OCL에 제약이 있고 컬렉션 클래스가 있고 탐색 기능이 있습니다 예를 들어 탐색 영역에 대해 잠시 이야기 해 봅시다

또한 OCL은 일반적으로 특정 클래스 모델과 연관되어 있다고 말했습니다 도표 그리고 그 사실을 기억하면 각 OCL 제약 조건에는 당신이 시작하고있는 클래스 나 연산을 가리키는 context 절 자, 인스턴스의 제약을 줄 수있는 것은 분명 가치가 있습니다 특정 클래스

그러나 몇 가지 말을 할 수 있다면 훨씬 더 강력합니다 수업은 특정 방식으로 관련되어 있습니다 즉, 제약 조건에서 컨텍스트 클래스의 속성을 지정할 수 있어야합니다 그러나 다른 클래스의 속성도 마찬가지입니다 괜찮아? 글쎄, 어떻게 그걸 할 수 있니? OCL에는 네비게이션이라는 개념이 있습니다

본질적으로 다이어그램을 따라 길을 걸어 라 그리고 당신이 조치를 취할 때마다, 당신은 길을 따라 기간과 다음 클래스 또는 관계의 이름을 추가합니다

Activity and Fragment Transitions in Lollipop

Android 50 Lollipop 또는 API 21 추가됨 활동 간 트래픽을보다 잘 설계 할 수있는 새로운 방법 첫째, 새 API를 사용하면 활동을 시작할 때 전환을 실행할 수 있습니다

출구 이렇게하면 화면에서 개별보기를 어떻게 사용자 정의 할 수 있습니다 진입 또는 퇴출 이를 콘텐츠 전환이라고합니다 둘째, 공유 항목 전환 만들기 , 이것은 요소가 움직일 때입니다 , 두 화면에 위치 결과는 시각적으로 지속됩니다 공통 요소들 중 새 API 응용 프로그램에 들어가기 전에 조금 얘기합시다 , 과정의이 부분이 적용될 때까지 우리가 공부 한 모든 것 연결된 모든 Android 버전에서 특히 AppCompat와 같은 Android 지원 라이브러리의 도움으로 , 우리가 본 공과에서 보았 듯이 Android API 응용 프로그램이 새로 출시 될 때마다 더욱 강력하고 효과적으로되었습니다

즉, 일부 고급 효과는 불가능할 수 있습니다 그것을 확인하거나 오래된 기계에 적용하십시오 애니메이션을 적용하는 일반적인 방법이 있습니다 최신 API 응용 프로그램을 사용하는 것이지만 모든 장치로 적절히 축소됩니다 복잡한 그림보다는 단순한 애니메이션으로 대체하십시오

기기가 지속적으로 활성화되고 업그레이드됨을 기억하십시오 따라서 새로운 API 응용 프로그램에서 작업하는 경우 처음에는 수용률이 떨어질 수 있습니다 그러나 투자 수익은 증가 할 것입니다 이제 버전 50의 새로운 활동 전환을 자세히 살펴 보겠습니다

Android Jetpack: manage UI navigation with Navigation Controller (Google I/O '18)

[음악 재생] LUKAS BERGSTROM : 안녕하세요 일찍 일어나서 우리와 함께있어 줘서 고마워

우리 천둥의 일부 3 ~ 4 건의 프레젠테이션으로 도난 당했을 수 있습니다 이 전에 Navigation Editor가 시연되었습니다 다행히도, 우리는 조금 더 자세하게 들어갈 시간이 있습니다 이전 발표보다 여기에는 많은 훌륭한 자료가 있습니다 그리고 저는 Lukas, Architecture for Architecture Components의 제품 관리자입니다

그리고 나와 함께, 나는 이안과 세르게이를 낳았다 내비게이션 구성 요소를 구축했습니다 네비게이션 네가 그것에 대해 생각한다면, Android의 거의 모든 앱에 문제가 있습니다 해결해야합니다 하지만 지금까지는 우리에게 정말로 당신을주지 않았습니다

시작 활동 이외의 작업을 수행 할 수있는 모든 것, 여러 가지 이유로, 그것에 대해 갈 가장 좋은 방법은 아닙니다 그래서 당신이 우리의 일을 생각한다면 안드로이드 개발, 탐색 용이 실제 해결책이없는 일반적인 문제였습니다 그리고 그것은 여러분에게 많은 것들이 있다는 것을 의미합니다 혼자서 해결해야합니다 그리고 조각 트랜잭션을 커밋하는 방법, 잘하면 예외를 던지지 않고, 네비게이션이 올바르게 실행되고 있는지 테스트하는 방법과 네비게이션이 발생할 때 올바른 일이 일어나고 있습니다

깊은 링크를 앱의 여러 위치에 매핑하는 방법, 당신의 앱으로 그 딥 링크 체계를 최신으로 유지하는 법 항해 구조 변경, 장소에서 논증 전달 장소 – 다시 말하지만, 우리는 오늘날 당신이 그것을 안전하게 할 수있는 안전한 방법을 제공하지 않습니다 위와 뒤로 사용자가 올바른 방향으로 이동하도록하는 방법 특히 어려운 상황에 처한 장소 앱의 네비게이션 깊숙이 깊숙이 링크 된 누군가처럼 계층 그리고 이것이 의미하는 바는 당신이 마칠 때입니다 이러한 문제를 해결하려면 일반적으로 두 가지 방향 중 하나를지나 갔다 당신은 탐색 프레임 워크의 60 %를 썼습니다

또는 오류가 발생하기 쉬운 상용구가 많이 있습니다 어디서나 내비게이션이 앱에서 발생해야합니다 따라서 코드의 병렬 라인이 여러 개 있습니다 이러한 다양한 문제를 해결하고, 전체 구조 상당히 부서지기 쉽다 그리고 개별적으로, 이러한 문제는 꽤 다루기 쉽습니다

그러나 실제 세계의 예를 보면, 당신은 그들이 꽤 털이 빠져 나올 수 있다는 것을 알 수 있습니다 앱에 항목 화면이 있다고 가정 해 보겠습니다 딥 링크를 통해 액세스 할 수 있습니다 여태까지는 그런대로 잘됐다 그러나 누군가가 개방을 통해 화면을 탐색 한 경우 홈 화면의 앱은 뒤쪽 스택에 몇 가지 다른 화면이 있습니다

그리고 그것을 치면, 우리는 그들을 원한다 항목 화면에서 앱 밖으로 가져 가지 마세요 카테고리 화면으로 이동 한 다음 홈 화면 그리고 누군가가 앱에 깊숙이 연결된다면, 우리는이 스크린들을 종합 할 필요가있다 항목 화면을 표시하기 전에 스택에 추가하십시오

그리고 타사 개발자와 이야기하면, 그는 당신이 코드를 작성하는 중일 때라고 말했습니다 이를 위해이 스크린들을 합성하는 것 앞뒤 스택에 추가합니다 하지만 딥 링크에서만 시작해야합니다 어쩌면 당신이 해결하고있는 것처럼 느낄 수 있습니다 프레임 워크의 실패 그래서 우리가하는 문제를 해결하는 것입니다

내비게이션을 시작합니다 그리고 우리가주는 것은 시각적 인 도구입니다 앱의 탐색 그래프를 수정할 수있는 이것은 XML로 표현됩니다 그리고이를 통해 사용 가능한 탐색 세트를 정의 할 수 있습니다 행동, 장소에서 장소로 전달할 수있는 논증, 시각적 전환과 같은 것들

그런 다음 하나의 탐색 통화가 활성화됩니다 그 모든 것을 런타임에 그리고 마지막으로 중요한 것은 결코 당신이 결코 한 가지를 의미하지 않습니다 프래그먼트 트랜잭션을 다시 만지는 것에 대해 걱정해야합니다 맨손으로

[박수 갈채] 따라서 탐색 그래프는 본질적으로 무엇입니까? 가능한 목적지의 집합 사람들이 내 앱에서 도달 할 수 있습니다 그리고 그것들은 대개 화면과 일치하지만 항상 그런 것은 아닙니다 그래서 네비게이션 컨트롤을 가질 수 있습니다 또는 화면의 작은 부분의 내용을 변경하는 것만으로, 하지만 일련의 탐색 대상입니다 그리고 그들을 연결하는 행동

그리고 행동은 실제로 당신이 어떻게 장소마다 갈 수 있습니다 따라서 실제로 앱에서 점 A에서 점 B로 이동하려면, 너는 정확한 항법을 부를 것이다 런타임시 조치 그러면 어떻게 생겼는지 살펴 보겠습니다 그리고 데모로 넘어 갑시다

승인 여기에서 우리가 보는 것은 일련의 탐색 목적지입니다 이들은 단편 대상이며, 다른 옵션도 가능합니다 화살촉과 그들을 연결하는 선들 행동입니다 그리고 이러한 액션은 실제로 메소드를 생성합니다

런타임에 호출 할 수 있습니다 여러분 모두 알고 있고 사랑하기 때문에이 모든 것이 XML에 의해 뒷받침됩니다 그리고 XML과 네비게이션 에디터 같은 능력을 지니고있다 그래서 둘 중 하나를 사용할 수 있습니다 여기서 화면을 추가 할 것입니다

그리고 당신이 보는 것은 일련의 이용 가능한 활동들입니다 그리고 내 애플 리케이션에 조각 좋아요, 그래서 우리는 그들에게 옵션을 추가했습니다 실제로이 질문에 성공적으로 대답하고 게임에서이기십시오 이제 액션을 추가 할 것입니다

해당 화면으로 이동합니다 큰 그리고 네비게이션 액션은 분명히 설정할 수있는 여러 가지 옵션이 있습니다 우리는 이것들에 대해 조금 더 이야기 할 것입니다 당분간, 우리는 한 가지를 할 것입니다

그래서 우리는 그들이 축하합니다 게임이 끝났음을 의미합니다 그래서 다시 타격해서는 안됩니다 더 이상 존재하지 않는 게임으로 이것이 의미하는 바는 우리가 행동하기를 원한다는 것입니다 Match 스크린으로 갑시다

그리고 그것은 내가 모든 것을 터뜨릴 것임을 의미합니다 이 목적지와 성냥 사이의 뒤쪽 스택에 화면 따라서 사용자가 축하합니다 화면에 도달하면, 그들이 뒤를 쳤을 때, 그들은 곧장 곧장 갈 것입니다 일치 화면으로 이동합니다 제가 설정할 수있는 많은 다른 옵션들, 하지만 지금은 그 얘기 만하겠습니다

돌아가 축하 화면을 다시 살펴 보겠습니다 언급 할 또 하나의 중요한 점은 여기에 설정된 핵심 사항입니다 프래그먼트 클래스입니다 이것이 런타임에 실제로 인스턴스화됩니다 레이아웃 미리보기는 여기에서 볼 수 있습니다

Navigation Editor 탐색 그래프와 관련된 레이아웃을 알고 있습니다 레이아웃과 관련이 있다는 것을 알고 있기 때문에 그 네비게이션 그래프로, 나는 두 배가 될 수있다 해당 조각의 목적지를 클릭하십시오 레이아웃 편집기로 들어가려면 큰 내가 방금 한 모든 일은 이 새 대상을 탐색에 추가 그래프, 행동, 그 팝 동작의 변화 그 행동의 전부는 내가 할 수있는 모든 것들이다

런타임에 프로그래밍 방식으로 수행합니다 따라서 탐색 편집기, XML 또는 프로그래밍 방식, 모두 잘 작동합니다 큰 그리고 지금, 나는 이것을 이안에게 건네 주겠다 좀 더 자세히 설명해 드리겠습니다

IAN LAKE : 그러면 마음에 떠오를 수있는 첫 번째 질문입니다 와,이게 완전히 새로운 길이야 귀하의 애플 리케이션의 UI를 구조화 그리고이 종류의 질문이 즉시 제기됩니다 좋아, 좋아, 내 활동이 실제로 의미하는 바는 무엇인가

권리? 모든 종류의 앱은 출발점이 매우 다릅니다 너희들이 지금있는 곳에서 – 아니면 이틀 전쯤에 앱 UI 구성 방법 일부는 매우 활동이 무거 우며 조각이 많이 무겁고 대단히 많을 수 있습니다

다른 시스템에서 모든 이들은 분명히 매우 유효한 장소입니다 그러나 우리는 활동이 더 많은 모델로 이동하고 있습니다 앱 진입 점 소유자가되는 활동보다는 앱의 콘텐츠 중 실제로는 그 세계적인 상태를 저장하게 될 것입니다

그래서 전 세계적인 항해가 가능합니다 아래쪽 탐색, 탐색 서랍, 당신은 여전히 ​​액션 바를 사용하고 있습니다 그것들은 활동이 관리하는 종류의 것들입니다 그러나 그것은 우리가 내용을 위해 NavHost라고 부르는 것에 위임합니다 그래서 우리의 멋진 슈퍼 간단한 활동 여기

우리는 상단에 액션 바를 가지고 있습니다 아래쪽에있는 하단 탐색 장치와이 큰 흰색 상자 중간에 그것은 우리의 NavHost입니다 그래서 탐색의 세계에서, 언제 당신은 다른 목적지들 사이를 항해한다 앱에서 실제로하고있는 일 그 상자 안의 모든 것을 바꿀뿐입니다

권리? 그래서 당신은 그 밖의 글로벌 네비게이션을 가지고 있습니다 우리는 당신이 그걸 갈고리로 묶을 수있는 고리를 가지고 있습니다 실제 NavHost와 동기화됩니다 그래서이 모양의 슈퍼 간단한 버전은 무엇입니까? 글쎄, 목적지에 파편을 사용한다면, NavHost 조각을 사용하고 싶을 것입니다 여기에 활동 레이아웃이 있습니다

그것은 말 그대로 우리의 한 조각입니다 따라서 탐색 조각 종속성을 포함시켜이 작업을 수행합니다 예상대로 완전히 다른 종류의 목적지를 사용하고 있다면, 아마 다른 종류의 NavHost도 가질 것입니다 사용자 정의보기 또는 무엇이든 여기에 추가 한 항목 그들이 필요로하는 다른 항목

그러나 NavHost 조각을 위해 몇 가지 편의를 설정했습니다 행동 양식 어떤 내비게이션을 설정할 수 있는가? 그래프를 XML로 사용하고 있으므로 프로그래밍 방식으로 설정하지 않아도됩니다 그래프의 시작 지점으로 이동합니다 기본적으로

그리고 파편들에 대해서 우리는 실제로 이것을 시스템 뒤로 버튼에 연결하십시오 그래서 우리는 정확히 그것을 할 수있는 방법을 제공합니다 따라서 특별히 뒤로 누를 때 재정의 할 필요가 없습니다 탐색을 위해 우리는 파편의 마법을 사용하여 모든 것을 연결합니다

이 기본 NavHost 옵션을 통해 그래서 우리의 활동이 실제로 두 줄의 코드가됩니다 그것은 두 줄이지만 수평으로 맞지 않습니다 슬라이드에 하지만 우리가 할 일은 단지 부 풀리는 것뿐입니다 우리 레이아웃, 컨텐츠보기, 그리고 위로 버튼 연결

이제는 일반적으로 큰 작업입니다 그러나 그래프의 구조에 대해 우리에게 말했기 때문에, 우리가 할 수있는 일은 이 경우, 우리는 활동에 Kotlin 확장 방법을 사용하고 있습니다

Java 사용자를위한 정적 메소드 일뿐입니다 내비게이션을 찾을 수있게 해주는 컨트롤러는 ID를 전달함으로써이 경우, NavHost 조각의 ID입니다 그리고 그것은 우리에게 위로 가기위한 액세스 권한을줍니다 그리고 옳은 것을 할 것입니다 탐색 그래프를 기반으로합니다

실제로 실제로 많은 추가 작업을 수행 할 필요는 없습니다 우리에게 그래프를 주면, 우리는 당신을 위해 이것을 할 수 있습니다 하지만 대부분의 앱에는 단 한 가지만 있습니다 실제로 당신이 가진 것이 아닙니다 어쩌면 당신은 조금 더 많은 것을 가지고있을 것입니다

그래서 우리는 두 번째 종속성 인 navigation-ui를 설정했습니다 실제로는 정적 메서드 집합입니다 네비게이션 구성 요소를 재료 설계 요소의 이러한 것들 중 일부는 하단 nav 및 사물과 같습니다 그런 종류의 글로벌 네비게이션에서 매우 그렇습니다 공간

물론 2018 년입니다 KTX, 정적 메서드를 확장으로 변경하는 개체 클래스가 작동하는 메소드 그래서 이것은 Kotlin 사용자들에게는 정말 쉽습니다 앱에 통합하고 탐색 기능을 제공합니다 그게 뭔가있는 것 같아

거기에있는 모든 구성 요소에 존재합니다 그럼이게 어떻게 생겼어? 우리가 다시 우리의 활동을 조금 더 복잡하게 만들면, 상단에 툴바를 추가하면 아래쪽 탐색보기를 추가하십시오 이 경우에도 앱 종류는 동일합니다 이전에 네비게이션 화면에서 보았던 그러나 우리가 이러한 것들을 연결하기 위해하는 일은 두 부분으로 나뉩니다 하나, 여기 메뉴가 실제로 나옵니다

당신이 각 목적지에 가지고있는 것과 동일한 ID를 사용하는 것 따라서 각 대상에는 고유 한 ID가 있습니다 그리고 실제로 메뉴 항목에 동일한 ID를 사용할 수 있습니다 그런 종류의 암시적인 링크를 구축합니다 오, 물론 홈 메뉴 항목을 클릭하면 앱의 집에 갈 것입니다

코드에서 우리는 액션 바를 설정하려고합니다 툴바를 사용하여 그런 다음 동일한 findNavController를 수행 할 수 있습니다 NavController 객체에 액세스 할 수 있습니다 그런 다음 활동에 대한 전화와 확장 기능 만 있습니다

NavController를 사용하여 작업 표시 줄을 설정할 수 있습니다 그리고 이것은 꽤 마술입니다 그러나 실제로 그것이하는 일은 실제로 네비게이션 할 때 이벤트를받을 예정이다 NavController에서 설정 한 라벨을 사용합니다 내비게이션 그래프에서 액션 제목을 업데이트하십시오

바 그리고 우리는 또 다른 도우미 방법을 가지고 있습니다 서랍 레이아웃을 사용하여 자동으로 변경하는 경우 햄버거 버튼에서 뒤로 화살표로, 당신이있는 목적지에 따라 그래서 정말로 도움이되는 패턴들 그 것들이 동기화되어 있는지 확인하십시오 마찬가지로 아래쪽 탐색의 경우 설치 프로그램을 호출하기 만하면됩니다

NavController로 설정 호출 여기에서 양방향 동기화를 다시 시도하십시오 그래서 당신이 아래의 nav에서 물건을 클릭하는 것에 따라, 그래프를 변경하고 올바른 전환을 수행합니다 물질적 지침에 근거하여, 앱 간을 이동하면서 별도의 버튼이 있다면 실제로 하단 탐색 메뉴에서 선택한 항목을 업데이트합니다 그래서 이것은 우리에게 많은 힘을줍니다 미리 빌드 된 구성 요소를 사용하고 있습니다

다른 팀이 제공 한 것입니다 모든 사용자 정의 UI가 있습니다 그래서 그 시점에서, 우리는 정말로 갈 필요가 있습니다 NavController가 실제로 당신에게주는 것을 더 깊게 살펴보십시오 그리고 아주 간단한 경우 버튼이 있습니다

당신은 어딘가로 가고 싶습니다 우리는 편리한 메소드를 가지고있다 OnClickListener를 탐색하십시오 당신은 당신이 가고 싶은 곳의 ID를주고, 어떤 대상, 어떤 작업을 트리거 할 것인지, 우리는 당신을 위해 모든 일을 할 것입니다 자, 아마도, 이것은 아마도 조금 마법 적이기 때문일 것입니다

그래서 당신은 그것을 조금 풀 수 있습니다 이 경우 다른 확장 방법을 사용하고 있습니다 보기에 그래서 NavController에 의해 만들어진 모든 뷰에서, 실제로 nav 컨트롤러에 대한 참조를 얻을 수 있습니다 findNavController를 호출함으로써, 예상대로, 해당 nav 컨트롤러를 사용하십시오

Navigate를 호출합니다 목적지의 ID로 이동하면됩니다 또는 귀하의 그래프에있는 행동 그게 전부 야 커버 아래에,이 Navigate는 실제로 많은 일을하고 있습니다

그래서 NavController는 우리가 탐색하는 탐색기와 대화하고 있습니다 그리고 파편들에 대해서 우리는 단편 네비게이터와 이야기하고있었습니다 우리가 제공합니다 그리고 그 항해자는 너에 관한 모든 것을 알고있다 탐색이라고합니다

네가 우리에게 준 때문에 네가 갈 조각이 뭔지 알아 너의 클래스 이름 그리고 모든 조각 트랜잭션을 빌드 할 것입니다 너를 위해서 그것은 Add to Back Stack을 호출 할 것입니다

그것은 당신이하는 모든 일을 할 것입니다 정보를 네비게이션에 넣으라고 말씀하셨습니다 그래프 그래서 당신이 팝 업했다면, 그것은 가고 있습니다 그런 모든 것들을 할 수 있습니다

전환은 모두이 코드 줄에 있습니다 그리고 그것 모두는 프로그래밍 방식으로 결정될 수 있습니다 – 이 방법에 추가 옵션을 추가 할 수 있습니다 미리 결정한 사항 네비게이션 그래프의 일부로 하지만 많은 장소에서 실제로는 탐색이 아닙니다 권리? 다음 출처로 전달할 정보가 있습니다 그러기 위해서는 정보 묶음을 전달해야합니다

여기에서는 문자열과 int를 전달합니다 우리는 안드로이드 KTX에서 우리의 좋은 도움이 번들을 사용하고 있습니다 그리고 그것은 작동합니다 괜찮아 이것은 많은 일에 정말로 유용합니다

그러나 똑같은 시점에서 그다지 안전하지는 않습니다 여기에 실수를한다면, 당신은 무엇을 할 것입니까? 그래서 우리는 이것을 훨씬 쉽게 만들고 싶습니다 세르게이가 우리가 한 일에 대해서 이야기 할거야 세르게이 바실리 네크 : 네, 우리가지었습니다 Safe Args Gradle Plugin이라고하는 무언가 그리고 그것은 당신을 조금 도와 줄 것입니다

그러나 우선, 우리가 해결하려고하는 것을 보자 그리고 우리의 예를 들어 봅시다 실제로 탐색하려고하는 도움말 조각 화면 이름 인수를 전달해야합니다 그리고 선택적으로 카테고리를 전달할 수 있습니다 정수형입니다

전화 사이트로 돌아가 봅시다 음, 우리 조각에서 우리는 모든 것을 올바르게 만들었습니다 우리는 스크린을 통과했으며 적절한 유형을 가지고 있습니다 우리는 범주를 통과했습니다 적절한 유형도 있습니다

하지만 실제로, [INAUDIBLE] 동안 다른 [INAUDIBLE] ,, 당신은 화면 이름을 전달하는 것을 잊을 수 있습니다 런타임 예외가 발생합니다 그리고 나 잘못하지 마라, 고치는 것은 매우 쉽다 그러나 그것은 짜증나게 느낀다 자바 스크립트 개발자는 무엇입니까? 왜이 컴파일 시간 검사를합니까? 나도 몰라

그래, 우리가 결정 했어, 좋아, 이제 우리는이 네비게이션 그래프를 가지고있다 네비게이션에 대해 모두 설명해 보겠습니다 목적지의 주장을 포함하여 XML에서 어떻게 보이는지 봅시다 그리고 그것은 매우 간단합니다 우리는 인수 이름, s-type을 추가로 지정합니다

지정된 기본값으로 그것은 당신의 주장이 선택적이라는 것을 의미합니다 그리고 이것으로 우리는 툴링을 만들 수 있습니다 일단 행동을 취하면 이 단편 또는 다른 행동이나 활동으로 이어지며, 우리는 당신이 적절한 주장을하고 그것을 확인하도록 할 수 있습니다 이제 어떻게 보이는지 살펴 보겠습니다

우리의 Gradle 플러그인과 같습니다 이제 탐색하기 위해이 특수 객체를 사용합니다 번들에 ID를 전달하는 대신 내부적으로 주제는 동일한 ID 및 동일한 인수를 통합합니다 그러나 그 객체를 얻으려면 HomeFragmentDirection 클래스를 사용합니다 그것은 당신을 위해 생성됩니다

방향 이름 접미사를 더한 프래그먼트 이름을 제안합니다 그리고이 클래스에는 정적 메서드가 있습니다 이 대상에 대해 정의 된 모든 작업에 대해 그리고 이러한 정적 메소드는 필수 인수를 통과시킵니다 그래서 우리의 경우, 그것은 우리에게 가정 논쟁을 전달하게합니다 그리고 나중에 선택적으로 나중에 설정할 수 있습니다

당신의 다른 추가적인 주장들 그리고 모든 것이 타입 안전합니다 그 후 수신 측은 매우 간단합니다 당신은 그들이 당신을 위해 생성하는 [비천 성]을 가지고 있습니다 그것은 args 클래스입니다

그래서 우리의 경우 HelpfragmentArgs입니다 그리고 그것은 당신의 주장을 모두 가지고 있습니다 당신이 조판 방식으로 정의한 것입니다 그리고이 비교적 작은 삶의 개선으로부터, 우리는 더 깊은 곳으로 간다 IAN LAKE : 네

그래서 딥 링크는 전통적으로 무언가입니다 Android가 가장 오랫동안 지원해 왔습니다 따라서 활동에 의도 필터를 추가 할 수 있습니다 딥 링크뿐만 아니라 웹 URL을 인수 할 수 있습니다 알림 및 사물에 매우 유용합니다

앱에 다시 연결하는 것과 같습니다 그러나 이것은 훨씬 더 복잡해집니다 당신은 더 복잡한 애플 리케이션을 얻을 당신이 어떻게 이런 것들을 구조하고 어떻게 말하는지와 같이, 좋아요, 통보를해야합니다 실제로 얻는 데 필요한 모든 코드는 무엇입니까? 내 응용 프로그램의 올바른 위치에 넣고 올바른 종류의 패스 여기에 정보가 있습니까? 탐색을 위해 일류 시민의 깊은 연결 고리 우리의 구조에서

실제로 두 종류의 딥 링크가 있습니다 명백한 종류 – 그래서 이것들은 알림, 앱 단축키, 앱 위젯, 새로운 액션 및 슬라이스, 당신이 만들고 일반적으로하는 것들입니다 계류중인 의도 이 앱은 다른 앱으로 전달하는 모든 것입니다 또는 말하기를 시스템에, 나는이 특정 장소로 ​​가고 싶다

내 앱에서 사물의 암시 적 측면은 웹 URL 주변에 더 많이 있습니다 및 맞춤 구성표 URL 그래서 이것들은 당신의 앱을 실행시키는 다른 앱이 될 것입니다 그리고 우리는 이들 모두를 네비게이션 용으로 처리합니다 명시 적 딥 링크의 경우 특정 클래스가 있습니다

NavDeepLinkBuilder라고합니다 그리고 인생의 유일한 목표는 딥 링크입니다 네비게이션 그래프의 특정 목적지로 이동 ID로 그러나 그것은 모든 일을 할 것입니다 말하기는 쉽지만 조금 더 어렵습니다 실제로 모든 것이 시스템에서 작동하는지 확인하십시오

그러나 NavDeepLinkBuilder를 만들면, 당신은 맥락으로 그것을 창조한다, 당신은 그것을 준다 당신의 그래프, 목적지, 당신이 가지고있는 모든 논쟁 그러면 Create Pending Intent를 호출 할 수 있습니다 그리고 우리는 여기서 모든 일을하고 있습니다 올바른 합성 백 스택을 생성하려면, 그래프 내에서 그리고 둘 다 있다면 여러 액티비티, 부모 액티비티도 사용합니다

그리고 우리는 그것을 함께 전달하고 올바른 의도로 올바른 장소에 도착할 때 당신은이 의도를 유발합니다 그런 다음 알림을 통해 전달합니다 당신은 실제로 이것보다 더 많은 것을 할 필요가 없습니다 모든 올바른 행동 암시 적 딥 링크의 경우 – 이것들은 다시 웹 URL에 대한 링크입니다

권리? 이 경우에, 뭔가가있는 대신 프로그래밍 방식으로 생성 한 탐색 그래프에 포함하는 정보입니다 여기에 딥 링크 요소가 추가됩니다 우리가 그래프에 인수와 액션을 추가 한 것처럼, 이들은 단지 깊은 링크 일뿐입니다 물론 비주얼 에디터에서 우리 모두를 할 수 있습니다 대상에 대한 속성의 일부로 앱과 마찬가지로 간단합니다 : uri

그리고 당신은 우 리를 전달합니다 자, 이것은 정적 인 uri입니다 이것은 지루하고 바보입니다 그리고 그들이하는 하나의 URI 만 가지고있는 많은 앱이 있습니다 그래서 우리는 물론 와일드 카드를 지원합니다

따라서 와일드 카드로 *를하고 싶다면 완전히 지원됩니다 목적지에 대한 인수를 작성하려면, 실제로 중괄호를 사용할 수 있습니다 그러면 URL을 구문 분석하고 해당 값을 추출합니다 너의 args을 위해 너에게 그들을 준다

다시 같은 종류의 안전한 args, 이제 당신은 URL에서 직접 얻을 수 있습니다 그리고 재사용 할 필요가 없습니다 당신은 이미 그것이 무엇을 해야하는지 알고 있습니다 마찬가지로 두 가지를 결합 할 수도 있습니다 좀 더 복잡한 패턴을 만들고 싶다면, 완전히 할 수있다 우리는 또한 자동 검증을 지원합니다

앱 링크를 사용하여이 동음 이의어를 건너 뛰는 경우 화면 우리는 당신이 같은 종류의 일을 할 수 있는지 확인하기를 원했습니다 네비게이션도 사용하고 있다면 여기에서는 HTTP, HTTPS를 중단했다고 가정합니다 그래서 우리가 여기에서하는 일은 실제로 둘 다하고있는 것입니다

우리는 HTTP, HTTPS를 말하고 있습니다 자, 서버가 모두 HTTPS라고 가정합니다 하지만 URL을 실제로 제어 할 수는 없습니다 다른 앱도 여기에 포함됩니다 어쩌면 그들은 실수로 귀하의 URL에서 S를 가져 갔을 것입니다

우리는 여전히 그것들을 모두 지원하기를 원합니다 그래서 우리는 이것을 단지 편리한 방법으로 사용합니다 하나 대신 두 줄을 사용하는 대신 물론 사용자 정의 체계에서도 작동합니다 그래서 당신이 특별히 설정 한 자신 만의 계획이 있다면 앱의 경우 딥 링크에 첨부 할 수도 있습니다 이제 가장 중요한 부분은 우리가 공구 공간을 가로 질러 일했다

그래서 네비게이션 에디터 외에도, 우리는 또한 명시 적 합병 팀과도 협력했습니다 따라서 하나의 탐색 그래프 요소 만 추가하면됩니다 그래프를 가리키는 매니페스트의 활동, 그래프의 모든 딥 링크 그러면 올바른 의도 필터로 확장됩니다 우리는 당신을 위해 모든 것을 만들겠습니다 Android Studio에서 Manifest Merger보기로 이동하면 네비게이션 파일에서 정확한 라인을 볼 수 있습니다

그 의도 필터를 생성했습니다 그래서 이것은 우리가 이제는 하나의 진리를 가지고 있다는 것을 의미합니다 내비게이션 그래프에서 이것이 꺼내지 않을 거라는 걸 알아라 당신이 기대하는 것과 동기화 할 수 있습니다 당신이 논쟁을 바꿀 때 그것은 동기화되지 않을 것입니다

XML 파일의 이름 이 모든 것은 일을하는 중심적인 장소 중 하나입니다 우리는 이것이 훨씬 쉬워 진다고 생각합니다 기본적으로 모든 암시 적 딥 링크 종류의 사례 물론 우리는 이것이 ActionView URL 인 모든 작업을 수행합니다

웹 URL의 경우와 동일합니다 선에 직접 추가 된 것을 볼 수 있습니다 그리고 그들 중 다수가 있다면, 그것은 실제로 당신에게 정확히 어떤 라인을 말할 것입니다 여러 그래프가 연결된 경우 다른 활동으로, 그들은 모두 잘 작동합니다 그래서 다른 주제 중 하나는 모든 아키텍처 구성 요소에서 정말로 중요합니다

테스트 중입니다 네비게이션 테스트는 매우 어렵습니다 그리고 이것은 우리가 가고있는 어떤 것입니다 알파 기간 동안 계속 살펴보아야합니다 그리고 우리는 여러분의 의견도 모두 정말로 원합니다

하지만 네비게이션에서 테스트를 생각하는 것에 대해 토론하고 싶었습니다 세상은 그렇게 보일 것입니다 따라서 목적지 사이의 모든 링크가 내비게이션을 통과 한 경우 테스트하기가 훨씬 쉽습니다 고립 된 목적지 권리? 각 대상을 자체적으로 테스트 할 수 있습니다

그런 다음 발신 에지를 테스트하거나 들어오는 논쟁과 다룰 필요가없는, 오, 그것은 실제로 오른쪽 조각 거래를 했나요? 네비게이션 컨트롤러에서만 테스트 할 수 있기 때문에 수평 그래서 이것은 우리가 가고있는 어떤 것입니다 더 많은 시간을 보냅니다 어제 조각난 이야기에서 우리는 실제로 정말로 조각 자체를 만들기 위해 말했어 훨씬 더 테스트 가능합니다

그래서 일종의 패키지 거래입니다 우리는 Navigation Controller에 테스트를 구축하려고합니다 그러나 또한 시험 할 수있는 목적지를 건설하는 것을 시도한다 그래서 지금 당장 뭔가를하는 데 관심이있을 것입니다 에스프레소 테스트를하고 테스트하고 싶습니다

오, 내가 뭔가를 탐색 할 때, 그것은 올바른 장소로 이동합니까? 글쎄, 우리는 실제로 Add-on Navigator navigate 리스너를 가지고 있습니다 그래서 실제로 그것을 NavController 's에 연결할 수 있습니다 항해자와 콜백을해라, 오, 이 버튼을 클릭하면 올바른 위치로 갔습니까? 그래서 이것은 우리가 꽤 성공적으로 찾은 한 가지 방법입니다 테스트 물건에서 물건을 완전히 블랙 박스 분명히 NavController를 삽입하려면 또는 다른 방법을 사용하십시오, 그것들은 또한 완벽하게 유효한 방법입니다 설정하는 것

오늘 당신은 무엇을 가지고 놀 수 있습니까? 그리고 당신은 무엇을 가지고 놀 수 있습니까? 당신은 이틀이 걸렸습니다 당신은 그것을보아야 만합니다 권리? 알파 100-alpha01입니다

우리는 버그 수정의 긴 활주로를 제공하고 있습니다 및 개선 사항 그리고 그것은 정말로 2 개의 주요 인공물, 항해 조각 (탐색 런타임 종속성 포함) 전이 의존성 및 또한 NavHost 조각과 조각 네비게이터 조각 목적지를 사용해야합니다 내비게이션 UI 의존성뿐만 아니라, 이러한 정적 메서드가 있습니다 그리고 탐색을위한 모든 의존성에 대해, 우리는 Kotlin을 사용한다면 대시 KTX 버전을 가지고 있습니다

그래서 우리는 정말로 코 틀린을 만들려고 노력했습니다 네비게이션 세계에서 일류 시민, 특히 몇몇 것들을 위해서 프로그래밍 방식의 그래프를 작성하는 경우처럼 구성 네비게이션 전체를 읽고 있다고 서버의 그래프, 우리는 Kotlin DSL을 가지고있다 Kotlin 확장 프로그램의 일부로 훨씬 쉽게 사용할 수 있습니다 니가 코 틀린을 쓰고 있다면

그래서 할 일이 많아서 루카스 이야기를 할거야 우리가 갈 곳에 대해서 루카스 버그 스톰 : 네 한 메모, Android Studio 32 미리보기가 필요합니다

Canary 14가 이것을 사용했습니다 그리고 그것을 다운로드하고 사용해보십시오 거기에 좋은 것들이 많이 있습니다 그래서 이것은 분명히 될 것입니다 아키텍처 구성 요소의 핵심 요소 그러나 JetPack 전반적인

따라서 JetPack을 사용하여 우리가 취한 동일한 접근 방식을 취할 것입니다 아키텍처 구성 요소 빈 종이처럼, 우리는 Android 개발자 경험이 무엇을 원합니까? 그리고 훨씬 더 광범위하게 적용하십시오 탐색은 결국 일부가 될 것입니다 기본 경험의

그래서 우리가 안정되면 새로운 프로젝트를 만듭니다 Android Studio에서 기본적으로 네비게이션 편집기에서 시작하고 꽤 위대한 세상이어야합니다 JetPack을 지금 사용해 볼 수 있습니다 지금 당장은 훨씬 좋은 소개가 있습니다 안드로이드 개발의 모든 주요 부분이 무엇인지

따라서 램프를 사용하는 것이 훨씬 쉽습니다 그리고 우리는 시간이 지남에 따라 이야기를 확대하기를 고대하고 있습니다 당신이 갈 수있는 더 많은 대화가 있습니다 Android KTX 및 페이징에서 페이징, 특히, 정말 멋진 깊은 라이브러리입니다 너와 함께 묶어서 너를 위해 많은 것을 해 JetPack의 다양한 아키텍처 구성 요소 네가 그렇게한다면 나는 너를 격려한다

당신보다 더 많은 것들을 가진 목록보기 주어진 시간에 기억을 유지할 수있다 이 페이징 토크에 정말로 가고 싶습니다 그리고 우리는 당신의 피드백을 원합니다 먼저이 세션에 대한 귀하의 의견을 기다리고 있습니다 그러나 더 중요한 것은, 우리는 여러분의 의견을 원합니다

네비게이션 구성 요소에 우리가 알파에 착수하는 이유는 우리가 이렇게 생각하기 때문이 아닙니다 정말로 시험받지 못했고 시험받지 못했습니다 우리는 실제로 이것을 시험해 보았습니다 하지만 우리는 알파 우리는 많은 피드백을 받기를 원하기 때문에 API를 잠그기 전에 커뮤니티의 베타로 전환하십시오

그러니 당신이 그것을 시험해 볼 수있는 좋은 시간입니다 당신에게 맞는 것을 알려주십시오 무엇이 우리에게 알려주지 않고 직접 우리와 대화 또는 우리의 공공 이슈 추적자에 우리는 당신의 의견을 듣고 싶습니다 귀하의 의견은 정말 중요했습니다

이 여행의 모든 ​​지점에서 확실하게 우리가 올바른 문제를 공격하고 있다고 올바른 솔루션을 제공합니다 그러니 시험해 보시고 어떻게 생각하는지 말해주십시오 그리고 고마워 [박수 갈채] [음악 재생]

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가 있습니다 실제 탐색을 처리하고 머티리얼 디자인 모범 사례를 반드시 따라야합니다 백 스택 관리가 진행됨에 따라 그 위에, 그것은 강조 표시를 처리합니다 올바른 하단 버튼

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

How To Change Navigation Bar Style On Any Android Device

이봐, 너희들 뭐야, 난 rahul 야 오늘은 네가 네비게이션을 바꾸는 법을 보여 줄거야 어떤 안드로이드 장치에서 바 스타일

장치에 주식 탐색 바가 없다면, 당신은 이것을 얻는 방법에 관한 나의 이전 비디오를 봐야한다 그 후에는 그것은 꽤 쉽게 스타일 따라서이 조정을 수행하려면 먼저 장치를 뿌리 뽑아야합니다 그 다음, 설명의 링크에서 삭제 된 설치 프로그램을 다운로드하고, 무료 다음 goto 다운로드 그런 다음 "xstana"에 대한 검색 그것을 선택하고 다음을 통해 슬쩍 버전 탭 그런 다음 다운로드하십시오

그 후에 "xstana"를 설치 한 다음 완료를 선택하십시오 그때 당신은 xposed 모듈이 활성화되어 있지 않은 것과 같은 알림을 받게 될 것입니다 "xstana" 장치를 재부팅하십시오 잠시 기다려주십시오 그런 다음 xstana를 엽니 다

그런 다음 상태 표시 줄과 탐색 줄을 변경할 수 있습니다

이제 탐색에 초점을 맞 춥니 다 바 여기에서 선택하십시오 많은 것들이 있습니다 바로 여기에서 볼 수 있듯이, 당신은 할 수 있습니다

내가 선택하고있는 것을 보아라 나는 함께 갈 것이다 그것의 좋지 않은

그래서, 그 후 바로 여기 ​​그 눈금 표 다음 장치를 재부팅

그런 다음 지금 당신은 마법을 보게 될 것입니다

그리고 여기 있습니다 꽤 좋아 보이는군요 그렇지 않습니까? 상태 표시 줄 스타일을 변경하려면 탐색 스타일 막대를 다시 변경하십시오 "xstana", 죄송합니다 goto "xstana"로 이동 한 다음 상태 표시 줄을 선택하십시오 스타일을 원해요 colorOS로 가려고합니다 그러면 탐색 바를 바꿀 수도 있습니다 그 위대함은 멋지다

그렇게 크지 않은 그러나 나는 그것을 할 것이다 그런 다음 장치를 다시 부팅하십시오

그런 다음 여기 우리는 간다 꽤 좋아 보인다 그래서 그것은 모든 사람이다 그것은 당신이 네비게이션을 바꿀 수있는 방법이다 바 스타일, 모두들 즐거웠 으면 좋겠다 도움이 되길 빌며, 지켜봐 줘서 고마워

내가 볼거야 다음 비디오에서 당신들은 제 채널에 가입하십시오 매주 1 주일에 한 번씩 그래서 너희들을 희망해라 구독해라 다음 비디오에서 너희들을 볼거야 잘가요

Required import android.support.v4.app.Fragment; in Android Studio

내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂 내 채널에 가입하지 않으시려면 SUBSCRIBE 🙂

How to use bottom navigation in android application

내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolution

com 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 방문 : www

saddasolutioncom 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolution

com 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolution

com 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolutioncom 방문 내 웹 사이트 : saddasolution

com 방문

Android S4E1 : AHBottomNavigation – Introduction

그래서 사람들은 어떻게 프로그래밍 마법사의 오늘의 판에 오신 것을 환영합니다 tv 이 수업에서 아아 탐색 모음에 대해 이야기 할 것입니다 나는 너희들에게 그것을 소개 하겠지만 그 전에 실제로 아래쪽 탐색이 무엇인지 이해해야했습니다

아래쪽 탐색은 탐색 유형에 불과합니다 애플리케이션 내에서 일반적으로 특히 모바일 장치에서 아래쪽 탐색 모음 사실 우리가 바라보고있는이 아랫쪽 네비게이션은 하단 네비게이션 기능을 구현하는 라이브러리 중 하나입니다 하단 네비게이션이 꽤 인기를 얻고있다 탐험하기가 매우 쉽기 때문에 탭 하나만으로 최상위보기간에 전환 할 수 있습니다 주어진 하부 네비게이션 항목을 탭하면 주어진 뷰로 이동합니다

아이콘을 탭하면 관련 뷰로 직접 이동합니다 특정보기를 읽는 경우 새로 고침됩니다 하단 탐색은 주로 휴대 기기에서 인기가 있습니다 데스크톱은 사이드 탐색을 사용하는 것이 바람직합니다 탐색 창과 같은 그래서 왜 우리는 아래쪽 탐색을 사용해야합니까? 3 ~ 5 개의 최상위 레벨보기 또는 목적지 정치 스포츠 및 기술을 보여줄 앱이 있다고 가정 해 보겠습니다

그것들은 세 페이지입니다 그러면 아래쪽 탐색을 사용해야하는 적절한 시나리오가됩니다 그래서 기본적으로 당신이 가지고있을 때 사용해야합니다 3 ~ 5 개의 최상위 목적지 사이 최상위 대상에 5 개 목적지 그럼 당신은 실제로 제공해야합니다 해당되지 않는 목적지에 대한 액세스 하단 네비게이션 탐색 서랍과 같은 것을 사용할 수 있습니다

두 번째로 당신이 당신의 목적지 인 경우에 그것을 사용할 수 있습니다 직접 접근해야한다 원하는 것을 탭하면 뷰에 직접 액세스하려는 경우 이 경우 아래쪽 탐색을 사용할 수 있습니다 그래서 더 많은 지침을 원한다면 하단 네비게이션 사용시기 materialio 웹 사이트로 이동 거기에서 문서를 찾을 수 있습니다

우리가 방금 소개 한 하단 네비게이션 그러나 아래쪽 네비게이션은 무엇입니까? 이제 이것이 우리가 이야기 할 내용입니다 실제로 우리가 재현 할 수있게 해주는 도서관입니다 하단 탐색에 대해 정의 된 이러한 특정 지침 이 중 두 명은 준비가되어 있었다 그래서 아래쪽 네비게이션은이 라이브러리를 구현합니다 그 특별한 행동들 이 특정 웹 사이트 내에서 정의 된 가이드 라인 그래서 그것은 기본적으로 우리가 하단을 재현하는 하단 탐색 기능을 재현 도서관 자체는 실제로 무료 및 오픈 소스 github에서 구할 수있다

이제 해치 하단 탐색의 일부 기능을 살펴 보겠습니다 왜 우리는 그것을 사용하고 있습니까? 그것을 완벽하게 구현한다 에 대해 정의 된 중요한 가이드 라인 아래쪽 탐색 그래서 기본적으로 아래쪽 탐색을 사용하여이 특정 지침을 사용하게 될 것입니다 둘째로 3시에서 5 시까 지 아래쪽 탐색 항목 제목이있는 색상 및 아이콘 아 하단 탐색 항목은 사용자 정의 할 수 있습니다 스타일 또한 선택할 수 있습니다 클래식 또는 컬러로 사용할 수 있습니다

클래식 또는 컬러 스타일을 선택할 수 있습니다 onTabSelection 이벤트도들을 수 있습니다 아주 쉬운 방법으로 그래서 탭에 액세스하기 위해 탭 선택 이벤트를 듣습니다 탐색 항목 AHBottom 탐색 기능은 아이콘 글꼴 색상도 지원합니다 또한 개별적으로 통지를 관리 할 수 ​​있습니다

하단 탐색 항목 용 하단 탐색 항목에 공지 사항을 표시 할 수 있습니다 마지막 하나는 AHBottomNavigation을 통해 참여자의 상태를 활성화 또는 비활성화합니다 하단 탐색 항목 AHBottomNavigation은 어떻게 설치되어 있습니까? 하단 탐색 설치를 살펴 보겠습니다 먼저 gradle을 통해 프로젝트를 설치합니다

우리가해야 할 일은 build to build gradle file이다 그리고 나서 우리는 다음과 같은 구현을위한 구현 문을 추가한다 당신은 최신 버전을 자유롭게 사용할 수 있습니다 XML 레이아웃을 프로젝트에 추가하는 방법을 알아야합니다

이것은 선택한 프로젝트 템퍼 레이트에 따라 달라질 것입니다 첫 번째 상황은 빈 활동을 사용할 때입니다 빈 활동은 활동입니다 appbar 레이아웃이나 툴바가 없습니다 비어 있고 레이아웃이 하나뿐입니다

일반적으로 activity_mainxml 레이아웃이 있습니다 그래서 그게 당신이 한 짓이라면 그럼 당신이해야 할 일은 바로 여기에 가서 우리의 ahbottomnavigation 레이아웃 ID를 지정했는지 확인하십시오 기본 활동을 사용하는 경우 기본 활동에 일반적으로 두 가지 레이아웃 : activity_mainxml과 content_main

xml 따라서 activity_mainxml로 이동해야합니다 너는있을거야 레이아웃의 루트에서 cordinatorLayout cordinatorLayout의 하단, appbarlayout 아래 ahbottomnavigationlayout을 추가하십시오 그것이 우리의 xml에 ahbottomnavigation을 추가하는 방법입니다

이제 자바에서 어떻게 작동하는지 살펴 보겠습니다 우리는 ahbottomnavigationitems를 만드는 방법을 보는 것으로 시작하겠습니다 물론 이것은 당신이 한 활동 내에서 할 것입니다 또는 활동 첫 번째 단계는 AHBottom 탐색 FindViewById를 사용하여 참조합니다 그러면 AHNavigationItem을 만들 수 있습니다

그런 다음 해당 항목을 AHBottom 탐색에 추가 할 수 있습니다 우리는 우리의 ahbottomnavigationitems에 대한 TabSelection 이벤트를들을 수 있습니다 전체 예제를 보자 이것이 우리가 건설 할 것입니다 AHBOttomNavigationItems가 있음을 알 수 있습니다

항목을 선택하면 텍스트보기가 변경되는 것을 볼 수 있습니다 색상이 변함에 유의하십시오 우리의 AHBottomNavigationItem에는 텍스트와 아이콘 모두 먼저 프로젝트를 만듭니다 Java는 우리의 언어입니다

그런 다음 최소 sdk를 선택합니다 안드로이드 40 IceCreamSandwich를 우리의 지원할 최소 버전 그런 다음 템플릿에서 빈 활동을 선택했습니다 그런 다음 마침을 클릭하여 프로젝트를 생성하십시오

우리의 프로젝트 구조를 관찰 해 봅시다 먼저 AndroidManifestxml을 사용합니다 여기서 Android 애플리케이션 및 활동 구성 요소로 등록됩니다 그런 다음 우리가 사용할 드로어 블을 추가 할 것입니다

계획 이 PNG 이미지를 하단 탐색으로 사용할 것입니다 항목 '아이콘 각 탐색 탭에는 제목과 아이콘이 있습니다 그런 다음 앱 수준 build

gradle로 이동합니다 여기서는 minSDKVersion을 14로 지정합니다 그런 다음 구현 문을 갖습니다 우리는`comaurelherbert : ahbottomnavigation : version`을 추가합니다

구현 문은 의존성 섹션 한 번 다운로드하여 인터넷에 연결해야합니다 계획 그 후에는 다음과 같이 재사용 할 수 있습니다 android studio에서 캐시합니다

그런 다음 activity_mainxml 레이아웃으로 이동합니다 우리는 우리가 될 TextView를 갖게 될 것입니다 상표 우리는 우리의`com

aurelherbertahbottomnavigationAHBottomNavig ation`을 추가 할 것입니다 태그 아래에 있습니다 부모의 맨 아래에 정렬합니다

alignParentBottom을 true로 설정합니다 이제 빈 MainActivityjava 파일로 넘어갑니다 먼저 패키지를 지정합니다 자바 클래스에서 얻을 않습니다 패키지로 구성됩니다

그런 다음 MainActivity라는 클래스 이름을 지정합니다 우리는 수입 명세서를 추가 할 것입니다 그런 다음 MainActivity를 androidappActivity에서 파생시킵니다

인스턴스 필드로 AHBottomNavigation 유형의 bottomNavigation 변수를 추가합니다 그런 다음 TextView 유형의 headerTxt 그런 다음 뷰를 초기화하는 메소드를 생성합니다 initializeViews ()를 호출합니다 그 안에 우리는 findViewById 메소드를 사용하여 레이아웃에서 bottomNavigation을 참조합니다

id가 activity_mainxml에 정의되어 있음을 볼 수 있습니다 그런 다음 headerTxt도 참조하십시오 그런 다음 AHBottomNavigationItems를 만드는 메서드를 만듭니다 첫 번째 AHBottomNavigation 항목을 만듭니다

기본적으로 이러한 항목은 아래쪽 탐색에서 렌더링 될 탭 바 먼저 제목을 지정합니다 제목은 values ​​디렉토리의 stringsxml에 정의되어 있습니다 그런 다음 드로어 블 이미지를 지정합니다

이미지는 drawable 디렉토리 안에 있습니다 마지막으로 색상이 있습니다 색상은 values ​​디렉토리의 colorsxml에 지정됩니다 여기에 그 색깔이 있습니다

그런 다음 두 번째 AHBottomNavigationItem을 만듭니다 우리는 여전히 제목, 아이콘 및 색상을 지정합니다 그런 다음 세 번째 AHBottomNavigationItem도 있습니다 다음으로 네비게이션 아이템을 하단에 추가합니다 네비게이션 그런 다음 우리는 기본을 정했습니다

우리 바닥의 배경색 다음으로 우리는 악센트 색깔을 바꾼다 비활성 색상뿐 아니라 그런 다음 제목을 관리하고 아래쪽 탐색에 표시되는 방법을 바 나는 AHBottomNavigationTitleStateALWAYS_SHOW를 선택할 것입니다

그런 다음 setColored 메소드를 사용하여 아래쪽 네비게이션을 컬러로 설정합니다 그런 다음 프로그래밍 방식으로 현재 항목을 설정합니다 우리는 우리가 선택한 탭 선택 이벤트를 듣습니다 AHBottomNavigation onTabSelected 이벤트를 재정의합니다

우리는 그것이 부울로 선택 되었다면 탭 위치를받습니다 스위치 문을 사용하여 위치를 전환합니다 위치 0 인 경우 행성을 보여줍니다 위치 1이면 별이 표시되고 위치 2이면 은색이 표시됩니다 우리 그런 다음 onCreate 메서드를 재정의합니다

먼저 initializeViews () 메서드를 호출합니다 그런 다음 createNavigationItems () 메서드를 호출합니다 프로젝트를 실행하는 것입니다 항목을 선택하면 TextView에 항목이 표시됩니다 선택한 탭에 따라 색상이 변경됩니다

각 탐색 항목에는 아이콘과 제목이 있습니다 그리고 그게 다야 비디오를 좋아하고 구독하십시오 더 많은 것을 위해 우리 채널에