Best Android Studio Navigation Drawer Tutorial (Part 1) ☎️ ANDROID PHONES

안녕하십니까, 제 이름은 Oum Saokosal입니다 오늘은 Android Studio에서 내비게이션 서랍을 수행하는 방법에 대해 이야기하겠습니다

이 강의에서는 오늘 최신 버전 인 Android Studio 2를 사용합니다 이것이 네비게이션 서랍임을 알 수 있습니다 그것은 요즘 안드로이드 응용 프로그램을위한 전형적인 기능입니다 YouTube에서 저에게 연락하실 수 있습니다 : youtubecom/user/oumsaokosal Facebook

com/kosalgeek twittercom/okosal 또는 kosalgeek에서 내 소스 코드를 다운로드 할 수 있습니다 githubcom/kasolgeek에서 그래서 저는 이런 종류의 것에 대해 3 개의 비디오를 만들 것입니다 덮어 두라

특히이 비디오에서는 Navigation Drawer의 기본 사항에 대해 이야기하고 아이콘, 색상, 메뉴 및 조각을 추가하는 방법에 대해서도 이야기하겠습니다 Part 2에서는 프래그먼트에 뷰를 추가하는 방법에 대해 설명 할 것이다 예를 들어, 버튼, 텍스트 편집, LibView, RecyclerView 그리고 조각에 이벤트 핸들러가 있어야합니다 뿐만 아니라 파트 3은 보너스 일종의 것입니다 필요하지는 않지만 누군가 필요합니다

그것 이것은 네비게이터 서랍을 왼쪽에서 오른쪽으로 바꾸는 방법입니다 Facebook에서 볼 수 있듯이 Facebook 앱으로 이동하면 탐색 서랍이 아직 남아 있습니다 거기에서, 그러나 왼쪽에서 아닙니다, 그것은 오른쪽에서입니다 그래서 저는 이것을 어떻게하는지, 그리고 애니메이션을 클릭하는 것처럼 보여줄 것입니다

왼쪽에서 애니메이션이 나오고, 그런 식으로 슬라이드가 나오게됩니다 전체 애니메이션이 아니지만 기본적인 것입니다 이제 Android Studio로 이동해 보겠습니다 당신이 지금 볼 수 있듯이, 나는 더 빠른 에뮬레이터 인 Genymotion을 사용합니다 네이티브 한

Genymotion에서 다운로드 할 수 있습니다 무료입니다 그래서 이것은 사용자 인터페이스입니다 오! 안드로이드 SDK에 대한 업데이트도 있지만 어쩌면 내가 먼저 건너 뛰겠습니다 Android Studio 2의 사용자 인터페이스입니다

그것은 버전 15 그림과 조금 다릅니다 이제 새로운 Android Studio 프로젝트를 시작하겠습니다 아무것도 바뀌지 않았습니다 똑같은 일을하십시오

이제 Navigation Drawer 예제 1을 입력 해 보겠습니다 다음으로, 당신은 똑같은 일을합니다 자 이제 이걸 고르겠습니다 실제로, 당신은 처음에 이것을 선택할 필요가 없습니다, 당신은 단지 기본적인 활동을 사용할 수 있습니다 또한 나중에 활동을 추가 한 다음 탐색기 서랍을 선택할 수도 있지만 우리에게는 시작 활동이 없기 때문에 예를 들어 알 수 있습니다

그래서 그것을 선택합시다 좋아, 평소와 같이 MainActivity라고 부르 자 이제 완성 된 것이 아니라 탐색 서랍이있는 새로운 활동을 볼 수 있습니다 이제 실행 해 봅시다 그것과 당신은 탐색 서랍을 이미 볼 것입니다

그래서 그것은 큰 일이 아닙니다 그것이 템플릿이기 때문에, 당신도 알다시피 오늘처럼 예전처럼 네비게이션 서랍을 직접 작성해야합니다 그것은 매우 고통 스러웠습니다 그러나 요즘은 아주 좋아요

하지만 우리는 이해해야합니다 너는 우리가 바꿀 수 없다는 것을 이해하지 못한다 좋아, 그게 다야! 네비게이션 서랍 좋아,하지만 그게 맘에 들어? 아니, 많이 바꿔야하기 때문이 아니야 이건 그냥 템플릿 일뿐입니다하지만 코드를 작성하기 전에, 저는 당신에게 이것의 개념을 알려주세요

실제로 탐색 서랍은 새로운 개념이며 안드로이드는 아주 늦게 넣었습니다 초기 버전은 그걸 가지고 있지 않았고 엉망진창처럼 친절합니다 새로운 것을 좋아하는 것, 그리고 오래된 것을지지하고 싶다 그래서 그것은 아주 많다 코드가 그 뒤에 있습니다

알다시피, 나는 그것을 클릭하면 애니메이션이 슬라이드 인 (slide-in), 슬라이드 아웃 (slide-out) 심지어 당신은 그것이 정말로 애니메이션 인 것을 볼 것입니다 그것을하는 것은 고통 스럽지만 안드로이드는 모든 것을 숨기기위한 어떤 종류의 메커니즘도 가지고 있지 않다 모든 코드를 보여 주며, 코드를 모를 수 있다는 것을 모르는 경우 어쩌면 당신은 거대한 오류로 끝날 수 있습니다 나는 그것을 단계별로 설명 할 것이다 나는 당신이 붙잡을 수 있기를 바랍니다

먼저 레이아웃을 잘 이해해야하므로 하나의 레이아웃에 4 가지 레이아웃이 있습니다 활동 늘 그렇듯이, 주 활동을 기억할 수도 있으므로 주 활동 활동을 생성 할 것입니다 내용은 안드로이드를위한 새로운 것입니다 activity_main은 여기에 대한 실제 레이아웃입니다

코드로 가보면 더 잘 볼 수 있습니다 activity_main에 DrawerLayout이라는 새로운 도구가 있습니다 DrawerLayout은 안드로이드의 초기 버전에는 존재하지 않았기 때문에 추가했습니다 당신도 알다시피, 이걸로 할 수 있을지도 몰라요 여기 다른 모든 것은 DrawerLayout이며 변경할 수 있습니다

크기를 그렇게 만드십시오 그러나 나중에 크기를 변경하는 방법을 알려 드리겠습니다 DrawerLayout, 두 개의 구성 요소가 있다는 것을 알 수 있습니다 하나는 include이고 include에는 include가 포함됩니다 app_bar_main이라는 또 다른 레이아웃

이것은 app_bar_main이며 내부에없는 것을 볼 수 있습니다 여기있어 알았어 따라서 app_bar_main은 계층 액티비티의 activity_main과 유사합니다 툴바 및 부동 액센트 버튼 등이 여기에 특별하지 않습니다

변경하려는 경우 app_bar_main에서 변경 한 다음 activity_main으로 돌아갈 수 있습니다 여기 탐색보기를 보는 것도 새로운 것입니다 여기에는 DrawerLayout과 NavigationView의 두 가지가 있습니다 따라서 실제 탐색이 NavigationView에 있습니다 그래서 메뉴와 nav_header_main을 가지고 있습니다 그럼 여기서 nav_header_main은 무엇입니까? 다음은 nav_header_main입니다

따라서 이것은 탐색 서랍의 상단 부분과 같습니다 아이콘을 변경할 수 있습니다 당신은 색상도 바꿀 수 있습니다 그래서 저는 지금 그것을 바꾸고 싶지 않습니다, 단지 그것을 조금 설명하고 싶습니다 그리고 여기에 메뉴

여기에서 가장 중요한 부분입니다 여기서 그것은 다른 메뉴에 묶여 있습니다 여기에서 볼 수있는 메뉴는 메뉴 안에 있습니다 자, 이제 전체 메뉴를 볼 수 있으며 메뉴에 대한 미리보기가 없습니다 그래서, 두 부분이 있습니다

하나는 그룹이고 다른 하나는 item 태그가있는 그룹입니다 여기에서 볼 수있는 간단한 아이템입니다 하지만, 예를 들어, 여러분이 원하는 부분을 원한다면 이것은 통신 부분과 같습니다 당신은 아이템을 가질 수 있고, 아이템 안에는 메뉴가있을 수 있으며 아이템을 가질 수 있습니다 항목 안에 다른 메뉴와 항목도있을 수 있습니다

여기에는 아무 것도 없습니다 단순한 카메라 일 뿐이므로이 카메라는 탐색과 같은 것입니다 app이므로 여기에서 가져 오기를 참조하십시오 이것은 수입품입니다 메뉴에 어떤 조치를 취하고 싶다면 메인 메뉴와이 메뉴로 가야합니다

여기를 클릭하면이 모든 탐색 항목이 표시됩니다 그것은 네비게이션 메뉴를위한 것입니다 여기서는 무엇이든 할 수 있습니다 이런 식으로 토스트를하고 당신은 갤리에서도 그것을하고 싶습니다 그래서, 여기에 많은 것들이 있습니다

당신에게 보여주고 싶은 것도 있습니다 이 메소드가 중복되어 있으므로 추가로 변경해야합니다 그래서 나는 그것이 IDE 코드의 일종이라고 생각합니다 그래서 앱 메뉴는 이것에 대한 것이지 그다지 중요하지 않으며 단지 변경 만 할 수 있습니다 너는 아무것도 바꾸고 싶지 않고, 그냥 만지지 마라

여기 이것을 바꿀려고한다 모두, 이미지를 변경하고 싶을 수 있습니다 여기 레이아웃은 여기에 있습니다, 배경 여기서 배경을 변경할 수 있습니다 drawable / side_nav_bar에 있습니다

그래서 너는 들으러 간다 이건 괜찮아 변경하려는 경우 여기에 색상을 변경하고 아이콘을 첨부 할 수 있습니다 여기서 메뉴는 XML 코드에 의해 생성 된 아이콘이므로 매우 유연하게 될 것입니다 해상도를 변경하지 않고 크기를 늘리고 크기를 줄일 수 있습니다 하지만 할 일은 어렵습니다

어떻게 그릴 수 있는지 이해해야합니다 그래서 지금은 타이핑하지 않겠지 만, 지적하고 싶었습니다 그래서 그것을 사용하고 싶다면 그것을 사용하거나 원하지 않으면 그냥 탐색 할 수 있습니다 인터넷에서 아이콘을 위해 그리고 그것을 바꿔라 여기 메뉴가 있습니다

보시다시피 이곳 드로어 블 (drawable)의 아이콘으로 이동합니다 당신이 원하지 않는 항목 그래서, 카메라, 갤러리, 그리고 지금은 두 가지만 사용하고 싶습니다 그리고 나는 가야만합니다 main_activity는 카메라, 갤러리 및 공유에 대한 모든 메뉴를 가지고 있기 때문에 여기에 있습니다

우리는 이것을 필요로하지 않습니다 이제는 다른 배경을 보았습니다 원하는대로 다른 메뉴를 만들 수 있습니다 이제 조각을 추가 할 차례입니다 조각은 무엇입니까? 단편을 모르는 경우 단편은 활동 내부의 주제입니다

그것은 전체적인 부분이 아니며, 어떤 종류의 이것일지도 모른다, 알았어 따라서 하나의 액티비티에서 여러 개의 조각을 가질 수 있으며, 현재 볼 수 있듯이 우리가 이것을 클릭하면, 단편적인 텍스트 하나가 여기 있습니다 갤러리를 클릭하면 또 다른 조각이 부착 된 다른 것을 볼 수 있습니다 활동 탐색 서랍에서 조각을 이해하고 사용해야하지만 실제로는 직접 작성해야합니다

단편은 그다지 어렵지 않습니다 단편은 다른 종류의 활동과 비슷하지만 활동은 아니지만, 그것은 활동의 작은 부분입니다 여기에 새로운 단편을 만들어 봅시다 그래서 당신은 새로운 곳으로 가서 여기에서 조각을냅니다 그냥 빈 조각을 사용할 수 있습니다

보시다시피이 부분입니다 모든 것이 아니라 여기에 있습니다 그 단편에는 3 개의 수표가 있습니다 알겠습니다 그래서 첫 번째 것은 매우 중요합니다

왜냐하면 레이아웃을 단편에 첨부하기를 원하기 때문입니다 이 코드는 많은 코드를 작성하지만 언젠가는 그렇지 않습니다하지만 체크하지 않은 사람부터 시작하여이 수표와 마지막으로 다른 활동을 작성합니다 하나는 오래된 수표 좋아, 그럼 이걸 모두 선택 취소하고 어쩌면 우리는 카메라 조각을 그래서 이것은 조각이고 당신은 그것을 알아 차립니다

그것은 AppCompatActivity가 아닌 조각으로 확장됩니다 이것은 AppCompatActivity이지만이 코드는 조각이며 코드는 활동보다 적습니다 단 하나의 메소드 만 필요합니다이 메소드는 onCreateView라고 불립니다이 메소드는 단편에 가장 중요한 메소드입니다

AndroidManifest에서 한 가지를 지적하고 싶습니다 일반적으로 여기 안드로이드 매니페스트에 첨부 된 활동을 볼 수 있습니다 그러나 하나는 그렇지 않습니다 실제로는 조각이 아니므로 AndroidManifest에 코드를 첨부하지 않습니다 그래서 여기 조각이 있습니다

아마도 여러분은 무언가를 더하고 싶을 것입니다 그것은 레이아웃도 가지고 있습니다, 그래서 여기 레이아웃은 fragment_camera입니다 지금은 일종의 엉망입니다 많은 것들이 있습니다 그리고 조각을위한 레이아웃이 프레임이되기 전에, 당신은 자유 롭습니다

무엇이든 바꿔라 RelativeLayout을 사용하고 싶습니다 텍스트 일뿐입니다 여기의 텍스트를 삭제하고 싶을 수도 있습니다 어쩌면 멋진 것을 추가하고 싶을 수도 있습니다

예를 들면 날짜 선택 도구입니다 그래서 main_activity에서 호출하고 싶습니다 나중에이 코드를 설명 하겠지만 여기서는 기본적인 것을 보여 드리겠습니다 이것은 카메라 오른쪽 그래서 당신은 카메라를 호출하기를 원하기 때문에 먼저 camera_fragment, 새로운 camera_fragment 좋아

조각 관리자가 필요해 매니저, getSupportFragmentManager라고 부르 자 여기에서는 조각을위한 레이아웃이 필요합니다 이것을 클릭 할 때, 실제 조각을 가지고 뭔가를 설정하기를 원한다 카메라를 클릭하고 갤러리를 클릭하면이 갤러리에 갤러리를 첨부 할 수 있습니다

그럼이게 뭐야? 이 것은 content_main에 있습니다이 탐색 창을 초기 버전, 아마도 Android Studio, 이제 Android Studio 2를 사용하고 있지만 15는 괜찮습니다 하지만 어쩌면 14 나 그보다 일찍 사용하면 여기에 content_main이 없습니다

여기서 content_main은 여기에 있습니다 여러분이 알고있는 내용과 여러분 앞에 있습니다 모든 activity_main을 가지고 있고 activity_main 내부에 ListView 또는 어쩌면 조각을위한 LinearLayout을 만들었지 만 이제는 내용을 분리 했으므로 content_main 여기 단편을위한 것입니다 왜냐하면 여기에있는 activity_main에서와 같이 app_bar_main을 포함하고 app_bar_main 안에 콘텐츠 메인을 포함하므로 같은 레이어와 레이어 및 레이어 따라서 다소 까다 롭지 만 유연성을 위해서는 중요합니다

이제 조각을위한 별도의 레이아웃을 만들 수 있습니다 코드를 작성할 필요가 없습니다 여기 안에는 자신 만의 레이아웃이 있습니다 따라서 RelativeLayout의 이름을 알아야합니다 그러므로이 버튼을 클릭하면 레이아웃의 ID를 변경할 수 있습니다

그래서 나는 단지 그것을 relativelayout_for_fragment라고 부릅니다 그것은 긴 이름의 일종이지만 그것은 매우 중요합니다 우리가 조각을 여기에 붙일 수 있기 때문에, 그래서 relativelayout_for_fragment, 그러면 너는 간다 여기 main_activity로 돌아 가면 바꿀 레이아웃이 있습니다 그래서 레이아웃 (R

Idrelativelayout_for_fragment) 그리고 이제 어떤 조각을 입력하고 싶습니다 그래서 이것은 대체품이고 이것은 대체품입니다 Replacer는 무엇입니까? 여기 카메라가있어 알았어

그래서 이것은 당신이 대체하고 카메라 조각이 여기에 붙어있는 것을 기억하고 싶은 목표입니다 여기 fragment_camera에 그래서 여기에서 무언가를 대체 할 것입니다 그러므로 조각에서 먼저 개체를 만들고 여기에서 조각 관리자를 사용하고 그런 다음 beginTransaction, Replace 및 this를 호출하십시오 그러나 다른 하나가 필요할 수도 있습니다

이것은 getTag라고 불리는 것과 마찬가지로 매우 중요합니다 프래그먼트에서 프래그먼트를 다시 호출하려면이 옵션의 마지막 옵션이 중요합니다 매니저 태그로 호출 할 수 있습니다 나중에 설명해 드리겠습니다

지금 알고 싶다면이 문제를 다룰 수는 있지만 이제는하지 않지만 나중에는 중요합니다 좋아, 이제 카메라 야 카메라 조각에서 레이아웃을 볼 수 있습니다 따라서 Hello World조차도 제거되지 않습니다 텍스트를 쓰면 마치 장소와 같습니다

그걸로 무언가를 얻었으니, 당신은 content_main에 가서 이것을 제거 할 수 있습니다 이제 끝났지 만 다른 조각을 추가 할 때 더 많이 발견하고 싶을 수도 있습니다 조각을 만들 때 일찍부터 말했던 것처럼 세 가지 옵션이 있습니다 이것을 남겨두고 포함 단편 팩토리 메소드 만 사용하고 싶습니다 아마 갤러리

좋아요 그래서이 코드는 팩토리 메소드를 생성 할 것이기 때문에 조금 엉망입니다 너를 위해서 한 활동에서 다른 활동으로 일부 데이터를 전달하려는 경우 중요합니다 이 경우에는 새 인스턴스를 보유 할 수 있습니다

이 인스턴스는 Gang of Four (GoF)의 디자인 패턴은이 매개 변수를 매개 변수로 사용하며 번들로 전달합니다 그런 다음 param1과 param2에서 다시 가져올 수 있습니다 그러면 다음에서 사용할 수 있습니다 이리 이제 여기에 아무 것도 입력하지 않고 그냥 전화하기를 원할 것입니다

꽤 비슷하지만 여기에서 메서드를 호출하는 방법을 보여 드리려고합니다 그래서 GalleryFragment를 호출하고 GalleryFragmentnewInstance를 호출합니다 이제 여기에서 데이터를 전달할 수 있으므로 some1과 some2라고 말한 다음 여기에서 동일한 코드를 사용합니다 단,이 값을 변경하려는 경우를 제외하고는 RelativeLayout을 전달합니다

조각, 왜냐하면 당신은 동일한 레이아웃을 사용하고자하고 아마도 GalleryFragment에서 원할 것입니다 자원에 가서 뭔가를 바꾸고 싶습니다 다시 Frame Layout을 RelativeLayout으로 바꾸고 싶습니다 여기서 텍스트는 시계를 추가하고 싶습니다 알았어,이 갤러리는 카메라 갤러리 야

하지만 이제는 데이터를 가져 오는 방법을 보여주고 데이터를 GalleryFragment 물론 그것은 매개 변수 1과 매개 변수 2에서 넘어 가고, 이제는 그것을 사용할 수 있습니다 당신이 다른 것을 필요로하길 바라며 다음 비디오와이 비디오에서 당신을 보여 드리겠습니다 로그 만 사용하므로 로그의 데이터를 볼 수 있으며 이것은 mParam1 mParam2입니다 좋아요, 이제 당신은 갤러리에 가고, 그 태그는 GalleryFragment입니다

그래서 여기의 메소드는 새로운 인스턴스가 하나의 인스턴스에서 데이터를 전달하는 아주 좋은 방법입니다 조각을 다른 조각으로 바꾼다 이제 나는 조각의 마지막 부분을 보여주고 싶다 이걸 내가 모두 확인해 볼께 인터페이스 콜백을 포함하십시오

오! 이름 레이아웃을 변경하는 것을 잊어 버렸지 만, 중요하지 않습니다 여기 예제 만 있습니다 그래서 이것은 당신이 그것을 통과시키고 자하는 방법입니다 매개 변수 1과 매개 변수 2 이제 당신은 전화를 다시받을 수 있습니다 콜백 (call back)은 어떤 일이 끝나면 마치 주머니 안의 데이터를 가져올 수 있습니다

활동 새 인스턴스를 호출 할 때 외부에서 갤러리로 데이터를 전달할 수 있음을 기억하십시오 단편이지만 콜백은 단편 상호 작용 수신기에 있으며 콜백입니다 프래그먼트에서 뭔가를 수행 한 후처럼 데이터를 외부로 가져올 수 있습니다 좋아, 전화하자

이 인스턴스는 새 인스턴스가 있기 때문에 비어 있습니다 아마도 data1과 data2 일 수 있습니다 어쩌면 내가 번호를 알려줄 것이므로 당신은 방법을 바꿀 수있을 것이다 이것이 문자열이라고 가정 해 봅시다 정수로 변경하고 하나의 매개 변수로 변경하려고합니다

이걸 그냥 삭제 해 봅시다 좋아요 param1은 문자열이므로 문자열입니다 정수로 변경해야합니다 그렇지 않으면 여기에 몇 가지 문제가있을 것입니다

getString 대신에 getInt 이제 여기 안쪽으로, 우리는 무언가를 바꾸고 이것을 기억하고 싶습니다 좋아요 끝나면 데이터를 다시 보내려고합니다 그래서 이것이 방법입니다

ButtonPress는이 조각에서 외부로 데이터를 보내기 위해 호출하는 메서드입니다 괜찮아 그래서 당신은 볼 수있는 것처럼이 방법을 여기와 마찬가지로 호출하기를 원합니다 여기에서 무엇이든 변경할 수 있습니다 그것은 당신을위한 예일 뿐이므로 변경하고 싶다면 아마도 이것을 바꿀 것입니다

문자열로, 그래서, 문자열을 변경하고 싶습니다 이제는 정수로 데이터를 얻었고 5로 곱한 다음 데이터 다시 이것은 단지 예일 뿐이며 데이터를 다시 보내 드리겠습니다 total은 이제 문자열입니다 이제 우리가 그것을 누를 때, 당신은 데이터를 보낼 것이고 당신은 on fragment를 부를 것입니다

상호 작용하고, on 조각 상호 작용 청취자를 구현하는 외부의 누군가는, 당신은 데이터를 볼 수있을 것입니다 이 경우 아직 완료되지 않은 데이터가 사용자에게 전달됩니다 당신이 볼 수 있듯이, 이제 약간의 오류가 있습니다 왜냐하면 당신은 데이터를 얻길 원하기 때문에, 단지 숫자 일 것입니다 5, 알겠습니다

그러면 여기에 같은 코드가 필요합니다 좋아, 그럼 도망쳐 여기에있는 오류는 실제 오류가 아니지만 실제로는 알려주는 것과 같습니다 당신은 프래그먼트 상호 작용 수신기에서 구현하는 것을 잊어 버렸습니다 기억하십시오

이걸 누를 때 데이터를 다시 가져와야합니다 좋아요, 버튼을 누르면됩니다 내가이 방법을 부르면, 누군가는들을 것이다 그러나 지금 지금 듣고있는 사람이있다 그래서 너는 당신이 일하기를 기대하지만 실제로이 활동에 대해 방법, 그래서 그것은 무엇입니까? BlankFragment는 조각 수신기에서 정상입니다

따라서 인터페이스는 빈 조각 안에 있기 때문에 이렇게 호출해야합니다 이제 메소드를 구현하십시오 여기에 데이터를 다시받을 장소가 있습니다 자 이제 데이터를 토스트하고 싶습니다 그래서 우리는 데이터를 정수로 보냈습니다

여기서는 BlankFragment로 가서 계산과 호출을합니다 on 버튼을 누르면 on fragment interaction 리스너가 데이터를 다시 보냅니다 여기에서 조각상 상호 작용을 통해 데이터를 다시 얻을 수 있습니다 그래서 이것은 새로운 방식이며 이것은 안드로이드에서 데이터를 보내는 데 권장되는 방법입니다 조각화하여 데이터를 조각화합니다

탐색 용 서랍의 기본 기능입니다 Part 2에서 이벤트에 대해 알게되고 조각에 대해 살펴볼 것입니다 내 채널을 구독하는 것을 잊지 말고 다음 비디오에서 보게 될 것입니다 고맙습니다