1. Navigation Drawer란 무엇인가
요즘 App에서 거의 필수로 쓰이는 기능으로, 안드로이드 기준 액션바 왼쪽에 위치하는 메뉴를 누르면
옆에서 메뉴창이 스르륵하고 나타나는데 그 기능을 Navigation Drawer라고 한다.
아래 영상을 참고하라
2. 구현
Navigation Drawer를 구현하기 위해서 몇단계를 거쳐야한다.
예전에는 Navigation Drawer가 위의 상태 바(status bar)를 가리곤 했는데 요새는 가리지 않도록 이쁘게 나왔다.
1) Design Support Library를 Gradle에 추가
그런데 여기서 중요한 점은 design 뒤에 붙는 저 숫자들이다.
저게 라이브러리의 버전인데 지금 현재 Android Studio에서 사용중인 appcompat-v7버전과 통일을 시켜줘야한다.
요렇게 말이다아. 솔직히 꿀팁이여따...
2) Navigation Drawer 창에 들어갈 menu xml 정의(동영상에서 First Item, Second Item, Third Item 걔들...)
res/menu(resource directory)에다가 new menu resource file을 선택해서 메뉴를 아이템을 구현하자.
(menu_navigation_drawer.xml)
3) ActionBar 처럼 사용할 Toolbar 구현
res/layout에 Toolbar의 xml을 만든다.(toolbar.xml)
여기서 중요한 점이 fitsSystemWindows를 true로 하는 이유는
status Bar와 Toolbar가 Navigation View에 가려지지 않기위해 충분한 공간을 획득하기 위함이다.
4) ActionBar 대신 Toolbar를 사용한다고 했으니 ActionBar를 Disable 한다.
res/values/styles.xml에서 현재 App테마를 NoActionBar로 해주는거지이 어렵지아나..
이거 안해주면....
'java.lang.IllegalStateException This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.'
이런.. 에러를 보는...대참사가 일어날 수 있음요...
5) 이제 Activity에 담아보자
지금 우리가 만든 xml이 뭘까??
toobar.xml 그리고 Navigation View에 표현될 menu_navigation_drawer.xml을 만들었다.
요걸 아직 사용안했다는 걸 모두 알고있을게야.. 그리고 지금부터 사용할 예정이라는 것도 알겠지 똑똑해 다들..
여기서 또 정신을 차려야한다. 바로 사용하는것이 아니라 Navigation Drawer를 사용하기 위해
Navigation Drawer가 사용되는 Activty의 layout에 DrawerLayout을 최상위로 포함 시켜줘야한다.
그리고 layout에는 숨어 있다가 눌렀을때 나타나는 Navigation View를 포함하고, Action Bar처럼 사용할
Toolbar도 포함해줘야하고, 동영상에서 '여기에 평소 텍스트, 버튼 등을 넣는 곳 입니다.'라고 구현되어있는
평소에 Relativelayout, Linearlayout 등을 사용해 화면을 꾸미던 layout 도 들어가야한다.
주석을 열씨미 읽으며 코드를 한번 보면 이해가 될것이다.
지금까지 소위 View만 짠것이고 이제 실제로 버튼을 누르고 화면에 뜨도록 하기위해서 Java 코드상에서
이벤트 핸들링을 해줘야한다.
6) Navigation View를 꺼낼 Button 추가
toolbar.xml 이 ActionBar의 역할을 한다고했다. 그러면 ActionBar에 Custom View를 넣어서 입맛대로
ActionBar에 버튼을 추가하고 꾸미던 것 처럼 toolbar도 가능하겠지?
동영상에서 Show버튼과 Title이라는 TextView를 넣어서 Toolbar를 커스텀했는데 그 코드는 아래와 같다.
Toobar 태그 속에 Layout을 생성해서 원하는 Component를 넣고 꾸미면 끝이다.
7) Java 코드 상에서 DrawerLayout, Toolbar, Navigation View를 초기화하고 핸들링을 해준다.
* Toggle은 무시해주세용 아직은 사용할 필요가 없어요
요거 그대로 따라하면 처음에 있는 동영상 처럼 작동이 되는 Navigation Drawer를 만들 수 있습니다.
클릭했을때 색상바뀌는거는 res/drawable에 Drawable resource file 만들어서 Selector로 색상을 임의로 줘서 했습니다.
'Develop > Android' 카테고리의 다른 글
OkHttp 사용법 (0) | 2017.02.09 |
---|---|
카카오톡 로그인 API를 사용해보자아(3) (6) | 2017.02.07 |
카카오톡 로그인 API를 사용해보자아(2) (0) | 2017.02.06 |
카카오톡 로그인 API를 사용해보자아(1) (5) | 2017.02.05 |
Context 탐구 (1) | 2016.12.28 |