Tabs and ViewPager (Android Development Patterns Ep 9)

안드로이드 개발 패턴에 오신 것을 환영합니다 저희는 여러분이 더 나은 앱을 만들 수 있도록 하는데요 저는 이안 레이크입니다 시작해보겠습니다 앱에서 이동하는 방법을 생각해보시길 바랍니다 패런트뷰 (Parent View)에서 상세보기로 이동하거나 시블링뷰 (Sibling View) 사이를 이동할 수 있습니다 여기에서 탭과 뷰페이져(ViewPagers)가 필요합니다 뷰페이저가 무엇일까요? 이로 인하여 콘텐츠가 있는 다양한 페이지 사이를 스와이프하는 것을 제어할 수 있습니다 뷰페이저는 페이저어댑터에서 콘텐츠를 가져옵니다 이건 각각의 페이지나 전체 프래그먼트를 위한 일반적 보기가 될 수 있는데요 FragmentPagerAdapter나 FragmentStatePaferAdapter를사용하고 계신다면 FragmentStatePaferAdapter는 모든 프래그먼트를 유지시키고 메모리에서 생성되어, 이미 로드 된 탭 사이를 전환하는 걸 더 가볍고 빠르게 만듭니다 하지만, 메모리 측면에서 보면 무게가 있는 편입니다 많은 개수의 프래그먼트를 가지고 있다면 말입니다 FragmentStatePagerAdapter과 같은 것은 필요에 따라 프래그먼트를 제거하고 다시 생성하면서 해결하여 오로지 상태를 유지합니다 PageAdaptor에는 많은 것들이 있지는 않습니다 여러분이 가지고 있는 페이지의 수로 반환하기 위해서 getCount를 치환해야 합니다 FragmentPagerAdapter의 경우에 getItem을 실행해야 합니다 그러면 각각의 위치에 연결된 프래그먼트가 반환될 것입니다 여기에서는 각각의 위치를 위한 오른쪽 프래그먼트를 선택하여 간단한 switch statement을 해보겠습니다 하지만 여러분이 원하는 접근법을 사용하셔도 괜찮습니다 여기에서 치환해야 할 또 다른 것은 각각의 페이지에 적혀있는 문자열을 반환하는 getPageTitle입니다 페이지에 제목이 왜 필요할까요? 여러분의 뷰페이저에 연결된 몇 가지 탭을 가지기를 원하면 이러한 페이지 제목이 정말로 유용할 것입니다 탭은 모든 페이지를 끝까지 보지 않더라도 사용자들이 페이지에 있는 것들을 쉽게 볼 수 있도록 합니다 이를 통하여 사용자들은 탭을 선택하여 페이지 사이를 건너뛸 수도 있습니다 안드로이드 디자인 지원 라이브러리에 속한 탭레이아웃 클래스는 모든 머티리얼 디자인을 사용하여 탭을 실행하기 쉽도록 만들어 줍니다 그리고 이전 버전인 안드로이드 21까지 호환이 됩니다 전부 다같이 다뤄보겠습니다 먼저 뷰페이저를 setAdapter를 사용하여 페이저어댑터에 연결시켜야 합니다 그 다음에 탭레이아웃을 연결하는 것은 setupWithViewPager 하나의 방법입니다 이를 통해서, 페이저어댑터의 제목에서 탭을 만들 수 있습니다 그러면 페이지를 스와이프 하면서 탭을 변경하고 탭을 선택하면 페이지가 변경될 것입니다, 예상했듯이요 디자인 라이브러리를 추가하여 탭레이아웃과 뷰페이저를 시작해보시길 바랍니다 디자인 가이드라인과 상세한 훈련 문서를 확인하시는 것도 잊지 마시길 바랍니다 안드로이드 개발 패턴에 함께해주셔서 감사합니다 탭과 뷰페이저를 사용하여 더 나은 앱을 만드시길 바랍니다