Navigation Drawer, DrawerLayout, and NavigationView (Android Development Patterns Ep 8)

장치에서 화면영역은 꽤 다루기 겁나는 부분이며 머티리얼 디자인은 앱을 더 단순하고 깔끔하게 보이도록 해줍니다 하지만 이로 인해서 사용자들은 앱이 제공하는 모든 옵션을 찾기가 힘들어졌습니다 저는 조애나 스미스입니다 이런 이유로 인하여 여러분이 내비게이션 드로어를 사용해야 하는거죠 내비게이션 드로어는 화면의 왼쪽 가장자리에 있는 옵션 패널입니다 일반적으로는 뷰에서 숨겨져 있습니다 그러나 사용자가 왼쪽에서 밀면 볼 수 있습니다 가로방향의 태블릿과 같이 충분한 화면영역이 있다면 영구적으로 나타날 것입니다 내비게이션 드로어가 있으면 흔히 왼쪽 내비게이션으로 불리는데요 시각적으로 과다한 것을 노출하지 않고도 여러분의 앱에 수 많은 기능과 반응을 제공합니다 그래서 여러분에게 가장 중요한 기능을 정면과 중심에 둘 수 있고 사용자가 더 많은 것을 원하면 메뉴를 열어서 볼 수 있습니다 지금쯤이면 여러분은 곧바로 왼쪽 내비게이션을 만들어야 한다고 생각하실 것입니다 만드는 방법을 지금 보여드리겠습니다 먼저, 드로어 레이아웃을 생성합니다 드로어 레이아웃은 루트뷰이어야 하며 두 개의 차일드뷰를 포함해야 합니다 첫 번째 차일드는 화면의 메인 콘텐츠에 있는 뷰이어야 합니다 이는 여러분의 왼쪽 내비게이션이 숨겨졌을 때를 위한 것이며 드로어가 나중에 열렸을 때 상단에 있을 것입니다 두 번째 차일드는 내비게이션 드로어 자체를 위한 뷰입니다 레이아웃을 만든 이후에 그에 알맞은 항목의 목록이 필요할 것입니다 내비게이션 뷰는 내비게이션 드로어에 필요한 프레임워크를 제공하여 이를 더 쉽게 만들어줍니다 있다면, 헤더 레이아웃과 목록 항목의 메뉴 두 가지가 있는 내비게이션 뷰 위젯이 있으면 됩니다 메뉴는 사실 굉장히 훌륭합니다 프로그램에 따라서 목록 뷰를 관리하는 것 대신에 메뉴 XML 리소스에서 여러분의 콘텐츠 확장을 허용하기 때문입니다 즉, 여러분은 내비게이션 드로어에서 무료로 모든 머티리얼 디자인 스타일링을 사용할 수 있다는 것입니다 미니 리소스는 체크할 수 있는 메뉴 항목의 수집으로 단순할 수 있습니다 현재 무엇이 체크되었는지 간에 하이라이트 되어 내비게이션 항목으로 표시될 것입니다 또한 항목을 함께 묶기 위해서 하위 헤더를 사용하여 더욱 복잡한 메뉴를 만들 수도 있습니다 이제는 여러분의 내비게이션 항목의 목록이 있으니 여러분은 이벤트를 클릭하여야 합니다 여러분은 리스너로 선택된 설정 내비게이션 항목을 사용하여 리스너로 선택된 내비게이션 항목에서 설정하여 선택된 항목에서 콜백을 가지게 될 것입니다 이러한 콜백은 여러분에게 클릭된 메뉴 항목을 제공합니다 이는 여러분이 선택된 이벤트를 다루고 체크 상태를 변경하며 새로운 콘텐츠를 가져오는 것과 같은 것을 허용합니다 여러분의 내비게이션 드로어가 여러분의 앱에서 영구적인 뷰가 아니라면, 보통 그럴 가능성이 높습니다 열기 이벤트와 닫기 이벤트에 주의를 기울여야 합니다 이를 이용하여 여러분은 뷰를 변경하기 전에 필요한 조정을 할 수 있습니다 내비게이션 드로어를 열기 위한 기본값 검사기는 왼쪽에서 스와이프합니다 또한 열리거나 닫힌 드로어를 토글하기 위해서 햄버거 아이콘을 사용할 수 있습니다 마지막으로 한가지를 알려드리겠습니다 저는 내비게이션 드로어를 왼쪽 내비게이션으로 불렀는데요 이렇게 칭한다고 해서 항상 왼쪽에 있어야 한다는 것을 뜻하는 것은 아닙니다 예를 들어, 여러분의 앱이 오른쪽에서 왼쪽의 레이아웃을 지원한다면 처음부터 끝까지 여러분의 레이아웃 속성을 왼쪽에서 오른쪽 대신에 입력했을 것이고 시스템은 여러분을 위해서 오른쪽 내비게이션을 생성할 것입니다 이로 인해, 여러분의 RTL 사용자들은 내비게이션 드로어를 열기 위해서 오른쪽에서 스와이프 할 수 있습니다 그리고 이것은 화면의 오른쪽에서 조정이 될 것입니다 안드로이드 개발에 대해서 더욱 많이 알아가시면서 여러분이 앱을 최고의 상태로 만들며 나머지 안드로이드 개발 패턴 콘텐츠를 확인하면서 G+ 커뮤니티에 가입하여 더 많은 팁과 기술 그리고 도움을 받으시길 바랍니다 하지만, 가장 중요한 것은 더 나은 앱을 계속해서 만드는 것입니다