Navigation Drawer
(참고 글 : https://recipes4dev.tistory.com/140)
navigation 기능을 drawer처럼 필요할 때마다 열고 닫으며 사용하는 것임.
(navigation 뷰를 drawerLayout 에 넣어 사용하는 것이지 저 자체로 하나의 뷰 위젯 클래스가 아니다)
또 이 drawerLayout는 (대체로) FrameLayout으로 구성한다. 왜냐면 각 네비게이션 항목마다 레이아웃을 각각 구성하면 리소스 낭비가 크다고 했었나... 여하튼 그렇게 하나하나 만들어 매번 전체 화면을 이동하는 것보다 FrameLayout으로 (공통적인 부분을 제외한) 바꿔 표시될 뷰만 수정하는 것이 훨씬 빠르기 때문이다.
AppBar vs ToolBar vs ActionBar
(참고 글 : https://dreamaz.tistory.com/103)
appbar = 가장 상위 개념. 대개 actionbar라고도 부름.
정확히는 appbar로 사용할 수 있는 toolbar와 actionbar 중에서 하나를 골라 appbar로 사용하는 것임.
그럼 toolbar와 actionbar의 차이는 무엇인가?
안드로이드 버전 3.0 전부터 디폴트 테마를 사용하는 모든 액티비티는 actionbar를 appbar로 사용했음. 그런데 새로운 안드로이드가 출시되면서 appbar의 기능이 점점 OS에 기본적으로 포함된 native actionbar로 추가 되었음. 이러다보니, OS마다 native actionbar가 다르게 동작되는 문제가 생김. 그래서 최근 기능은 toolbar라는 새로운 지원 라이브러리에 추가해서 OS구분 없이 동일한 appbar를 사용할 수 있도록 만든 것임.
appbar를 구성할 때 OS간 호환성을 위해 toolbar(지원 라이브러리)를 사용한다.
(코드 출처: https://github.com/Onedelay/MyDrawer.git)
+ 라이브러리 경로가 android.support.v7.app.* / android.app.* 이렇게 다른 것은,
각각 지원 라이브러리와 OS 내부에 존재하는 라이브러리를 나타내기 때문이다.
CoordinatorLayout
(원문 : https://kangmin1012.tistory.com/33)
CoordinatorLayout은 FrameLayout에 기반을 둔 Layout으로 2개의 주요 기능이 있다.
- 최상위 Decor 뷰로서의 사용
- 자식 뷰들간의 인터렉션을 위한 컨테이너로서의 사용
보통 CoordinatorLayout은 스크롤 이벤트에 따라 상단 앱바의 변화를 줄 때 사용한다. ( 대부분 그렇게 사용하는 것 같다.)
위의 샘플 처럼 스크롤 할 경우 앱바의 크기가 늘어나고 줄어드는 화면을 만들고 싶을 때 CoordinatorLayout을 사용하면 쉽게 만들 수 있다고 생각한다. (기본적으로 안드로이드 스튜디오에서 템플릿을 제공해 주고 있기 때문...)