이 책은 빅 너드 랜치(Big Nerd Ranch)의 유명한 안드로이드 훈련 캠프 과정의 노하우를 기반으로 집필되었다. 따라서 이 책을 통해서 최신 안드로이드의 핵심적인 개념을 배울 수 있고, API에 관한 명쾌한 설명과 더불어 직접 애플리케이션을 작성하면서 안드로이드 프로그래밍의 기초부터 고급 기법까지 배울 수 있다. 또한, 이 책에서는 안드로이드 애플리케이션 개발에 필요한 실제적인 기법을 가르치는 데 초점을 둔다. 안드로이드 스튜디오로 직접 코드를 작성하고 실행하여 이 책의 여러 애플리케이션을 만들어보자. 자신의 안드로이드 프로그래밍 능력이 부쩍 향상되는 것을 체감할 것이다. 각 장의 설명과 프로젝트는 안드로이드 애플리케이션 개발을 시작하는 데 필요한 지식과 경험을 제공하기 위해 설계되고 테스트되었다.
이 책의 구성
이 책에서는 8개의 안드로이드 앱을 작성한다. 어떤 것들은 매우 간단해서 한 장으로 끝나지만, 어떤 것들은 복잡해서 여러 장에 걸쳐 만들어진다. 그중 가장 복잡하고 긴 앱은 11개 장에 걸쳐 개발된다. 모든 앱은 저마다 중요한 개념과 기법을 가르치도록 설계되어 있어, 이 책을 읽으면서 앱을 작성하다 보면 어느새 여러분이 숙련된 안드로이드 프로그래머가 된 것을 느끼게 될 것이다.
제2판에서 달라진 것
베스트셀러였던 1판에 이어 이번 개정판에서는 안드로이드 스튜디오를 사용해서 안드로이드 앱을 개발하는 방법을 보여준다. 그리고 롤리팝에서 새로 소개된 툴바와 머티리얼(material) 디자인이 추가되었다. 또한, 지원 라이브러리의 새로운 도구인 RecyclerView와 구글 플레이 서비스의 설명 및 사용 코드도 추가되었다. 이외에도 표준 라이브러리의 SoundPool, 애니메이션(animation), 에셋(asset)에 관해서도 다룬다.
추천사
빅 너드 랜치에서는 수많은 개발자가 안드로이드 앱을 능숙하게 개발하는 데 필요한 교육 훈련을 제공하고 있다. 이 책은 그 교육의 진수를 모아놓은 것이며, 자신의 실력을 향상하고자 하는 누구에게나 큰 도움을 줄 것이다.
_ 마이크 쉐이버(Mike Shaver), 페이스북의 모바일 엔지니어링 담당 임원
안드로이드에 입문하려는 개발자는 물론이고 어느 정도 경험 있는 개발자도 꼭 읽어야 할 책이다. 나는 이 책의 명쾌함에 감명을 받았다. 안드로이드의 쉽고 어려운 주제 모두를 정말 이해하기 쉽게 설명하고 있다.
_ 제임스 스틸(James Steele), 《Android Developer’s Cookbook》 저자
지은이 소개
빌 필립스(Bill Phillips)
빅 너드 랜치의 안드로이드 강사이자 소프트웨어 엔지니어다. 빅 너드 랜치에서 안드로이드 교재 개발과 강의를 함께 하고 있으며, 안드로이드 프로그래밍 기법에 관한 글을 블로그에도 게시하고 있다. 여가에는 독서를 하거나 피아노 연주를 즐긴다.
브라이언 하디(Brian Hardy)
빅 너드 랜치의 소프트웨어 엔지니어이자 강사다. iOS와 Cocoa 애플리케이션 개발도 하고 있으며, 여가에는 친구나 가족과 함께 시간을 보낸다.
크리스 스튜어트(Chris Stewart)
빅 너드 랜치의 안드로이드 팀을 맡고 있으며 강의도 한다. 여가에는 자전거 하이킹과 여행을 즐긴다.
크리스틴 마시캐노(Kristin Marsicano)
빅 너드 랜치의 안드로이드 개발자이자 강사다. 그녀는 소프트웨어 개발과 교육을 접목하는 데 열정을 갖고 있다. 애플리케이션 개발이나 강의를 하지 않을 때는 요리와 요가 그리고 새로운 지식을 습득하거나 한다.
옮긴이 소개
심재철
현재 프리랜서로, 데이터베이스/모바일 시스템 컨설팅과 강의를 진행하고 있다. 또한, 20여 년 이상을 데이터베이스 및 객체지향 시스템 개발 프로젝트, 건설/금융 분야 애플리케이션 개발 등에 참여했다. 대표 번역서로는 《핵심만 골라 배우는 안드로이드 스튜디오 & 프로그래밍》, 《UML 사용자 지침서》, 《Thinking in JAVA 4/e》, 《이펙티브 자바》, 《SQLite 마스터 북(제2판)》, 《프로 오브젝티브-C 디자인 패턴》, 《세븐 데이터베이스: 만들면서 파악하는 NoSQL》 등이 있다.
차례
1장 처음 만드는 안드로이드 애플리케이션 1
앱 기본사항 2
안드로이드 프로젝트 생성하기 3
사용자 인터페이스 레이아웃 만들기 10
레이아웃 XML에서 뷰 객체로 18
위젯을 코드와 연결하기 22
토스트 만들기 27
에뮬레이터에서 실행하기 29
안드로이드 앱 빌드 절차 41
2장 안드로이드와 모델-뷰-컨트롤러 45
새로운 클래스 만들기 46
모델-뷰-컨트롤러와 안드로이드 49
뷰 계층 수정하기 51
컨트롤러 계층 수정하기 54
장치에서 실행하기 59
아이콘 추가하기 62
챌린지 66
챌린지: 리스너를 TextView에 추가하기 67
챌린지: 이전 버튼 추가하기 67
챌린지: Button을 ImageButton으로 변경하기 68
3장 액티비티 생명주기 71
액티비티 생명주기 로깅하기 73
장치 회전과 액티비티 생명주기 79
장치 회전 시 데이터 저장하기 84
액티비티 생명주기 다시 알아보기 86
onSaveInstanceState(Bundle) 테스트하기 88
로깅 레벨과 관련 메서드들 90
4장 안드로이드 앱의 디버깅 91
예외와 스택 기록 92
안드로이드 특유의 디버깅 102
5장 두 번째 액티비티 만들기 107
두 번째 액티비티 준비하기 108
액티비티 시작시키기 116
액티비티 간의 데이터 전달 119
안드로이드가 액티비티를 어떻게 알까? 130
챌린지 132
6장 안드로이드 SDK 버전과 호환성 135
안드로이드 SDK 버전 135
호환성과 안드로이드 프로그래밍 137
안드로이드 개발자 문서 사용하기 143
챌린지: 빌드 버전 보여주기 146
7장 UI 프래그먼트와 프래그먼트 매니저 147
UI 유연성의 필요 148
프래그먼트 개요 149
CriminalIntent 앱 개발 시작하기 150
UI 프래그먼트의 호스팅 161
UI 프래그먼트 생성하기 165
UI Fragment를 FragmentManager에 추가하기 171
프래그먼트 사용 시의 애플리케이션 아키텍처 177
지원 라이브러리의 프래그먼트가 좋은 이유 178
각 안드로이드 버전의 표준 라이브러리 사용 179
8장 레이아웃과 위젯으로 사용자 인터페이스 생성하기 181
Crime 업그레이드하기 181
레이아웃 변경하기 183
위젯을 코드와 연결하기 185
XML 레이아웃 속성 더 자세히 알아보기 186
그래픽 레이아웃 도구 사용하기 191
챌린지: 날짜의 형식 만들기 201
9장 RecyclerView로 리스트 보여주기 203
CriminalIntent의 모델 계층 변경하기 205
프래그먼트의 호스팅을 위한 추상 액티비티 208
RecyclerView, Adapter, ViewHolder 214
리스트 항목의 커스터마이징 223
리스트 항목 선택에 응답하기 229
ListView와 GridView 231
싱글톤 231
10장 프래그먼트 인자 사용하기 233
프래그먼트로부터 액티비티 시작시키기 234
프래그먼트 인자 239
리스트를 다시 로드하기 242
프래그먼트로부터 결과 받기 244
챌린지: 효율적으로 RecyclerView를 다시 로드하기 245
프래그먼트 인자를 사용하는 이유가 뭘까? 246
11장 ViewPager 사용하기 247
CrimePagerActivity 생성하기 249
FragmentStatePagerAdapter vs. FragmentPagerAdapter 255