000 | 00000nam c2200205 c 4500 | |
001 | 000045913232 | |
005 | 20170824170416 | |
007 | ta | |
008 | 170824s2017 ggka 001c kor | |
020 | ▼a 9791185890784 ▼g 93000 | |
040 | ▼a 211009 ▼c 211009 ▼d 211009 | |
041 | 1 | ▼a kor ▼h eng |
082 | 0 4 | ▼a 005.26/8 ▼2 23 |
085 | ▼a 005.268 ▼2 DDCK | |
090 | ▼a 005.268 ▼b 2017z2 | |
100 | 1 | ▼a Smyth, Neil |
245 | 2 0 | ▼a (핵심만 골라 배우는) 안드로이드 스튜디오 3 & 프로그래밍 / ▼d 닐 스미스 지음 ; ▼e 심재철 옮김 |
246 | 1 9 | ▼a Android Studio development essentials : ▼b Android 7 edition |
246 | 3 | ▼a 안드로이드 스튜디오 3 and 프로그래밍 |
260 | ▼a 파주 : ▼b 제이펍, ▼c 2017 | |
300 | ▼a xxvii, 863 p. : ▼b 삽화 ; ▼c 25 cm | |
440 | 0 0 | ▼a 제이펍의 모바일 시리즈= ▼x Jpub's mobile series ; ▼v 34 |
500 | ▼a 이 책은 <<핵심만 골라 배우는 안드로이드 스튜디오>>의 최신개정판임 | |
500 | ▼a 색인수록 | |
700 | 1 | ▼a 심재철, ▼e 역 |
740 | 2 | ▼a 핵심만 골라 배우는 안드로이드 스튜디오 |
900 | 1 0 | ▼a 스미스, 닐, ▼e 저 |
945 | ▼a KLPA |
Holdings Information
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.268 2017z2 | Accession No. 121241289 | Availability Available | Due Date | Make a Reservation | Service |
No. 2 | Location Sejong Academic Information Center/Science & Technology/ | Call Number 005.268 2017z2 | Accession No. 151341488 | Availability Available | Due Date | Make a Reservation | Service |
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.268 2017z2 | Accession No. 121241289 | Availability Available | Due Date | Make a Reservation | Service |
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Sejong Academic Information Center/Science & Technology/ | Call Number 005.268 2017z2 | Accession No. 151341488 | Availability Available | Due Date | Make a Reservation | Service |
Contents information
Book Introduction
안드로이드 스튜디오 기반의 애플리케이션 개발과 테스트에 필요한 환경 설정, 그리고 안드로이드 스튜디오의 주요 기능과 사용법을 간명한 예제 코드로 설명한다. 안드로이드 스튜디오 3의 각종 최신 기능에 대한 내용도 국내 최초로 포함하고 있다. ‘Kotlin(코틀린) 핵심 문법’ 이 부록으로 제공된다.
데이터베이스, 콘텐트 제공자, 인텐트, 클라우드 기반 파일 스토리지의 사용법과 구글 플레이와 연관된 내용을 설명한다. 최신의 안드로이드 스튜디오 3 버전에서 새롭게 변경된 레이아웃 편집기의 기능과 사용법과 안드로이드 7부터 새로 추가된 ConstraintLayout 클래스, Firebase 서비스 등의 개념과 구현 방법도 수록하고 있다.
최신 안드로이드 스튜디오 설치부터 안드로이드 개발 기초까지!
이 책은 안드로이드 스튜디오 기반의 애플리케이션 개발과 테스트에 필요한 환경 설정, 그리고 안드로이드 스튜디오의 주요 기능과 사용법을 간명한 예제 코드로 설명한다. 또한, 안드로이드 스튜디오 3의 각종 최신 기능에 대한 내용도 국내 최초로 포함하고 있다.
특별부록 ‘Kotlin(코틀린) 핵심 문법’ 무료 제공
최신 안드로이드 스튜디오와 안드로이드 OS 반영!
안드로이드 스튜디오 설치부터 안드로이드 개발 기초까지!
이 책은 안드로이드 스튜디오 기반의 애플리케이션 개발과 테스트에 필요한 환경 설정, 그리고 안드로이드 스튜디오의 주요 기능과 사용법을 간명한 예제 코드로 설명한다. 또한, 안드로이드 스튜디오 3의 각종 최신 기능에 대한 내용도 국내 최초로 포함하고 있다.
안드로이드 스튜디오를 사용해서 애플리케이션과 사용자 인터페이스를 설계하고 만드는 방법에 기본적으로 충실한 이 책은, 다양한 종류의 안드로이드 스튜디오 프로젝트를 직접 만들면서 각종 뷰 컴포넌트와 기본적인 프로그래밍 기법도 배울 수 있도록 구성하였다.
안드로이드 애플리케이션 개발에 필요한 필수 내용은 물론 고급 주제인 데이터베이스, 콘텐트 제공자, 인텐트, 터치스크린 처리, 동작 인식, 카메라 사용, 비디오와 오디오의 재생과 수록, 인쇄, 애니메이션, 클라우드 기반 파일 스토리지의 사용법 등도 다룬다. 그리고 구글 맵 API를 사용한 지도 구현, 구글 플레이 개발자 콘솔에 애플리케이션을 게시하고 인앱 결제를 하는 방법 등 구글 플레이와 연관된 내용도 설명한다. 또한, 머티리얼 디자인을 구현하는 새로운 컴포넌트인 플로팅 액션 버튼, 스낵바, 탭 인터페이스, 카드 뷰, 앱 바, 컬랩싱 툴바, 내비게이션 드로어, 런타임 퍼미션 등도 배운다.
더불어 최신의 안드로이드 스튜디오 3 버전에서 새롭게 변경된 레이아웃 편집기의 기능과 사용법을 알려주며, 안드로이드 7부터 새로 추가된 ConstraintLayout 클래스, 직접 응답 알림, Firebase 서비스, 다중 창 지원 기능의 개념과 구현 방법도 배운다.
이 책에서는 여러분이 자바 프로그래밍 경험이 있다고 간주하므로 자바 언어에 대해서 별도로 언급하지는 않는다. 윈도우나 맥 또는 리눅스가 실행되는 컴퓨터가 있고, 안드로이드 스튜디오와 안드로이드 SDK를 다운로드하였다면 시작할 준비가 된 것이다. 독자 여러분을 환영한다!
Information Provided By: :

Author Introduction
닐 스미스(지은이)
20년 이상의 IT 개발 경력을 지녔다. 특히 프로그래밍 언어와 기업용 개발 도구, 사용자 인터페이스 디자인을 전문으로 해 왔으며, 시스템 프로그래밍과 웹 개발, 마케팅까지 담당하기도 했다. 닐은 IT 학사 외에 Network+, Project+, 자바와 마이크로소프트 MCP 자격증들을 가지고 있다. 또한 30여 종의 기술 관련 서적을 집필하였으며, 현재는 미국에서 인터넷 출판과 모바일 애플리케이션 개발 회사인 Payload Media를 공동 창업했고 CEO로 재직 중이다.
심재철(옮긴이)
현재 프리랜서로, 데이터베이스/모바일 시스템 관련 컨설팅과 번역을 하고 있다. 또한, 20년 넘게 데이터베이스와 객체지향 시스템 설계 및 개발 프로젝트와 건설/금융 분야 애플리케이션 개발 등에 참여했다. 새로운 테크놀로지와 다양한 프로그래밍 언어를 사용해서 실무에 활용하고 가르치는 것을 좋아한다. 저서로는 《핵심만 골라 배우는 코틀린 프로그래밍》이 있으며, 번역서로는 《스프링 인 액션(제5판)》, 《카프카 핵심 가이드》, 《핵심만 골라 배우는 안드로이드 스튜디오 3 & 프로그래밍》, 《실무에 적용하는 안드로이드 프로그래밍(제2판)》, 《Learn Android Studio》, 《SQLite 마스터북(제2판)》, 《프로 오브젝티브-C 디자인 패턴》, 《세븐 데이터베이스》, 《UML 사용자 지침서》, 《Thinking in JAVA 4/e》, 《이펙티브 자바》 등이 있다.

Table of Contents
CHAPTER 1 개요 _ 1 1.1 안드로이드 스튜디오의 장점 _ 2 1.2 소스 코드 다운로드하기 _ 3 1.3 단축키와 코드 표기 _ 4 1.4 안드로이드 스튜디오 최신 버전 사용하기 _ 4 1.5 독자 _ 5 1.6 오탈자 _ 5 CHAPTER 2 안드로이드 스튜디오 개발 환경 구성하기 _ 6 2.1 개발 시스템 요구 사항 _ 6 2.2 자바 JDK 설치하기 _ 7 2.3 리눅스에서 설치하기 _ 9 2.4 안드로이드 스튜디오 패키지 다운로드하기 _ 11 2.5 안드로이드 스튜디오 설치하기 _ 11 2.6 안드로이드 스튜디오 설정 위저드 _ 17 2.7 가장 최신 버전의 안드로이드 패키지 설치하기 _ 18 2.8 명령행에서 안드로이드 SDK 도구 사용하기 _ 22 2.9 안드로이드 스튜디오와 SDK 버전 업그레이드하기 _ 26 2.10 안드로이드 SDK와 NDK 및 자바 JDK 경로 변경하기 _ 26 2.11 요약 _ 27 CHAPTER 3 안드로이드 스튜디오로 첫 번째 애플리케이션 만들기 _ 28 3.1 새로운 안드로이드 프로젝트 생성하기 _ 28 3.2 프로젝트와 SDK 설정 정의하기 _ 30 3.3 액티비티 생성하기 _ 33 3.4 애플리케이션 변경하기 _ 34 3.5 레이아웃과 리소스 파일 살펴보기 _ 42 3.6 요약 _ 45 CHAPTER 4 안드로이드 스튜디오 UI 둘러보기 _ 46 4.1 웰컴 스크린 _ 46 4.2 메인 창 _ 47 4.3 도구 창 _ 50 4.4 안드로이드 스튜디오의 단축키 _ 55 4.5 스위처와 최근 파일 기능을 이용한 내비게이션 _ 55 4.6 안드로이드 스튜디오 테마 변경하기 _ 56 4.7 요약 _ 57 CHAPTER 5 안드로이드 스튜디오에서 AVD 생성하기 _ 58 5.1 AVD 개요 _ 58 5.2 새로운 AVD 생성하기 _ 60 5.3 에뮬레이터 시작하기 _ 66 5.4 AVD에서 애플리케이션 실행하기 _ 66 5.5 Run/Debug 구성 _ 68 5.6 실행 중인 애플리케이션 중단시키기 _ 69 5.7 명령행에서 AVD 생조회하기 _ 70 5.8 AVD 구성 파일들 _ 72 5.9 AVD의 위치 이동과 이름 변경 _ 72 5.10 Intel HAXM 사용으로 에뮬레이터 성능 향상시키기 _ 73 5.11 요약 _ 74 CHAPTER 6 안드로이드 스튜디오 AVD 에뮬레이터 사용과 구성하기 _ 75 6.1 에뮬레이터 환경 _ 75 6.2 에뮬레이터 툴바 _ 76 6.3 줌 모드 사용하기 _ 78 6.4 에뮬레이터 창의 크기 조정 _ 78 6.5 확장 제어 옵션 _ 78 6.6 드래그 - 드롭 _ 81 6.7 모의 지문 구성하기 _ 82 6.8 멀티 코어 지원 _ 84 6.9 요약 _ 85 CHAPTER 7 실제 안드로이드 장치에서 애플리케이션 테스트하기 _ 86 7.1 ADB 개요 _ 86 7.2 안드로이드 장치에서 ADB 활성화하기 _ 87 7.3 adb 연결 테스트하기 _ 93 7.4 안드로이드 스튜디오에서 장치 확인하기 _ 94 7.5 요약 _ 97 CHAPTER 8 안드로이드 스튜디오 코드 편집기 _ 98 8.1 안드로이드 스튜디오 코드 편집기 _ 98 8.2 편집기 창 나누기 _ 101 8.3 코드 자동 완성 _ 102 8.4 문장 자동 완성 _ 104 8.5 매개변수 정보 _ 104 8.6 코드 생성 _ 104 8.7 코드 접어 감추기 _ 106 8.8 빠른 문서 검색 _ 107 8.9 소스 코드 형식 변환 _ 108 8.10 샘플 코드 찾아보기 _ 109 8.11 요약 _ 110 CHAPTER 9 안드로이드 아키텍처 개요 _ 111 9.1 안드로이드 소프트웨어 스택 _ 111 9.2 리눅스 커널 _ 112 9.3 안드로이드 런타임 ― ART _ 113 9.4 안드로이드 라이브러리 _ 113 9.5 애플리케이션 프레임워크 _ 115 9.6 애플리케이션 _ 116 9.7 요약 _ 116 CHAPTER 10 액티비티와 인텐트 개요 _ 117 10.1 안드로이드 액티비티 _ 117 10.2 안드로이드 인텐트 _ 118 10.3 브로드캐스트 인텐트 _ 118 10.4 브로드캐스트 수신자 _ 119 10.5 안드로이드 서비스 _ 119 10.6 콘텐트 제공자 _ 120 10.7 애플리케이션 매니페스트 _ 120 10.8 애플리케이션 리소스 _ 120 10.9 애플리케이션 컨텍스트 _ 121 10.10 요약 _ 121 CHAPTER 11 안드로이드 애플리케이션과 액티비티 생명주기 _ 122 11.1 안드로이드 애플리케이션과 리소스 관리 _ 122 11.2 안드로이드 프로세스 상태 _ 123 11.3 액티비티 생명주기 _ 124 11.4 액티비티 스택 _ 125 11.5 액티비티 상태 _ 126 11.6 구성 변경 _ 126 11.7 요약 _ 127 CHAPTER 12 액티비티 상태 변화 처리하기 _ 128 12.1 Activity 클래스 _ 128 12.2 동적 상태 vs. 영속적 상태 _ 132 12.3 안드로이드 액티비티 생명주기 메서드 _ 133 12.4 액티비티 생애 _ 135 12.5 액티비티가 다시 시작되지 않게 하기 _ 136 12.6 요약 _ 137 CHAPTER 13 액티비티 상태 변화 예제 _ 138 13.1 상태 변화 예제 프로젝트 생성하기 _ 138 13.2 사용자 인터페이스 디자인하기 _ 139 13.3 액티비티 생명주기 메서드 오버라이딩 _ 141 13.4 로그캣 패널의 메시지 필터링하기 _ 144 13.5 애플리케이션 실행하기 _ 146 13.6 액티비티로 실험하기 _ 147 13.7 요약 _ 149 CHAPTER 14 액티비티 상태를 저장하고 복원하기 _ 150 14.1 동적 상태 저장 _ 150 14.2 사용자 인터페이스 상태의 자동 저장과 복원 _ 151 14.3 Bundle 클래스 _ 152 14.4 상태 데이터 저장하기 _ 153 14.5 상태 데이터 복원하기 _ 156 14.6 애플리케이션 테스트하기 _ 156 14.7 요약 _ 156 CHAPTER 15 안드로이드 뷰, 뷰 그룹, 레이아웃 _ 158 15.1 서로 다른 안드로이드 장치를 위한 디자인 _ 158 15.2 뷰와 뷰 그룹 _ 159 15.3 안드로이드 레이아웃 매니저 _ 159 15.4 뷰 계층 구조 _ 161 15.5 사용자 인터페이스 생성 _ 163 15.6 요약 _ 163 CHAPTER 16 안드로이드 스튜디오 레이아웃 편집기 살펴보기 _ 164 16.1 Basic vs. Empty 액티비티 템플릿 _ 164 16.2 안드로이드 스튜디오 레이아웃 편집기 _ 167 16.3 디자인 모드 _ 167 16.4 팔레트 _ 169 16.5 레이아웃의 확대축소 보기 _ 170 16.6 디자인 뷰와 청사진 뷰 _ 170 16.7 텍스트 모드 _ 171 16.8 속성 설정하기 _ 173 16.9 즐겨 사용하는 속성 구성하기 _ 174 16.10 커스텀 장치 정의 생성하기 _ 175 16.11 현재 장치 변경하기 _ 176 16.12 요약 _ 176 CHAPTER 17 안드로이드 ConstraintLayout 개요 _ 177 17.1 ConstraintLayout의 핵심 요소 _ 177 17.2 기준선 정렬 _ 182 17.3 지시선 사용하기 _ 183 17.4 위젯 크기 구성하기 _ 183 17.5 비율 _ 183 17.6 ConstraintLayout의 장점 _ 184 17.7 ConstraintLayout의 가용성 _ 184 17.8 요약 _ 184 CHAPTER 18 안드로이드 스튜디오에서 ConstraintLayout 사용하기 _ 185 18.1 디자인 뷰와 레이아웃 뷰 _ 185 18.2 자동 연결 _ 187 18.3 제약 추론 _ 188 18.4 수동 연결 _ 188 18.5 제약 삭제하기 _ 189 18.6 제약 바이어스 조정하기 _ 190 18.7 ConstraintLayout 마진 이해하기 _ 190 18.8 상대 제약과 바이어스의 중요성 _ 192 18.9 위젯의 크기 구성하기 _ 194 18.10 지시선 추가하기 _ 195 18.11 위젯의 그룹 정렬 _ 197 18.12 다른 타입의 레이아웃을 ConstraintLayout으로 변환하기 _ 198 18.13 요약 _ 198 CHAPTER 19 안드로이드 스튜디오에서 ConstraintLayout 체인과 비율 사용하기 _ 199 19.1 체인 생성하기 _ 199 19.2 체인 스타일 변경하기 _ 202 19.3 Spread inside 체인 스타일 _ 203 19.4 Packed 체인 스타일 _ 203 19.5 바이어스를 사용한 체인 스타일 _ 204 19.6 체인 _ 204 19.7 비율 사용하기 _ 206 19.8 요약 _ 208 CHAPTER 20 ConstraintLayout 예제 프로젝트 _ 209 20.1 ConstraintLayout 예제 프로젝트 생성하기 _ 209 20.2 새로운 액티비티 생성하기 _ 210 20.3 자동 연결 설정과 이미지 파일 추가하기 _ 212 20.4 위젯을 사용자 인터페이스에 추가하기 _ 212 20.5 제약 추가하기 _ 215 20.6 레이아웃 테스트하기 _ 217 20.7 레이아웃 검사기 사용하기 _ 218 20.8 계층 구조 뷰어 사용하기 _ 219 20.9 요약 _ 223 CHAPTER 21 직접 XML 레이아웃 작성하기 _ 224 21.1 직접 XML 레이아웃 생성하기 _ 224 21.2 XML 직접 작성 vs. 레이아웃 편집기의 디자인 모드 사용 _ 228 21.3 요약 _ 229 CHAPTER 22 ConstraintSet으로 ConstraintLayout 관리하기 _ 230 22.1 자바 코드 vs. XML 레이아웃 파일 _ 230 22.2 뷰 생성하기 _ 231 22.3 뷰 속성 _ 232 22.4 ConstraintSet _ 232 22.5 요약 _ 237 CHAPTER 23 안드로이드 ConstraintSet 예제 프로젝트 _ 238 23.1 안드로이드 스튜디오로 예제 프로젝트 생성하기 _ 238 23.2 액티비티에 뷰 추가하기 _ 239 23.3 뷰 속성 설정하기 _ 240 23.4 뷰 ID 생성하고 사용하기 _ 241 23.5 제약 설정 구성하기 _ 242 23.6 EditText 뷰를 추가하기 _ 243 23.7 dp를 px로 변환하기 _ 245 23.8 요약 _ 246 CHAPTER 24 안드로이드 이벤트 처리 개요 _ 247 24.1 안드로이드 이벤트 이해하기 _ 247 24.2 android:onClick 리소스 사용하기 _ 248 24.3 이벤트 리스너와 콜백 메서드 _ 249 24.4 이벤트 처리 예제 _ 250 24.5 사용자 인터페이스 디자인하기 _ 250 24.6 이벤트 리스너와 콜백 메서드 _ 252 24.7 이벤트 소비하기 _ 253 24.8 요약 _ 255 CHAPTER 25 안드로이드 스튜디오의 Instant Run 사용하기 _ 257 25.1 Instant Run 개요 _ 257 25.2 Instant Run의 Swap 레벨 이해하기 _ 258 25.3 Instant Run의 활성화와 비활성화 _ 258 25.4 Instant Run 사용하기 _ 259 25.5 Instant Run 예제 프로젝트 _ 260 25.6 Instant Run의 Hot swap 수행시키기 _ 260 25.7 Instant Run의 Warm swap 수행시키기 _ 261 25.8 Instant Run의 Cold swap 수행시키기 _ 261 25.9 Run 버튼 _ 262 25.10 요약 _ 262 CHAPTER 26 터치와 다중 터치 이벤트 처리하기 _ 263 26.1 터치 이벤트 처리하기 _ 263 26.2 MotionEvent 객체 _ 264 26.3 터치 액션 이해하기 _ 264 26.4 다중 터치 처리하기 _ 265 26.5 다중 터치 애플리케이션 생성하기 _ 265 26.6 액티비티 사용자 인터페이스 디자인하기 _ 266 26.7 터치 이벤트 리스너 구현하기 _ 267 26.8 애플리케이션 실행시키기 _ 270 26.9 요약 _ 271 CHAPTER 27 안드로이드 제스처 감지 클래스로 일반 제스처 처리하기 _ 272 27.1 일반 제스처 감지와 처리하기 _ 273 27.2 제스처 처리 프로젝트 생성하기 _ 274 27.3 리스너 클래스 구현하기 _ 274 27.4 GestureDetector 인스턴스 생성하기 _ 277 27.5 onTouchEvent() 메서드 구현하기 _ 278 27.6 애플리케이션 테스트하기 _ 278 27.7 요약 _ 279 CHAPTER 28 커스텀 제스처와 핀치 인식 구현하기 _ 280 28.1 안드로이드 제스처 빌더 애플리케이션 _ 280 28.2 GestureOverlayView 클래스 _ 281 28.3 제스처 감지하기 _ 281 28.4 제스처 확인하기 _ 281 28.5 제스처 빌더 애플리케이션의 빌드와 실행 _ 281 28.6 제스처 파일 생성하기 _ 282 28.7 SD 카드에서 제스처 파일 추출하기 _ 283 28.8 예제 프로젝트 생성하기 _ 285 28.9 제스처 파일을 프로젝트에 추가하기 _ 285 28.10 사용자 인터페이스 디자인하기 _ 285 28.11 제스처 파일 로드하기 _ 286 28.12 이벤트 리스너 등록하기 _ 287 28.13 onGesturePerformed 메서드 구현하기 _ 288 28.14 애플리케이션 테스트하기 _ 289 28.15 GestureOverlayView 구성하기 _ 289 28.16 제스처 가로채기 _ 290 28.17 핀치 제스처 처리하기 _ 290 28.18 핀치 제스처 예제 프로젝트 _ 291 28.19 요약 _ 294 CHAPTER 29 안드로이드 프래그먼트 개요 _ 295 29.1 프래그먼트란? _ 295 29.2 프래그먼트 생성하기 _ 296 29.3 레이아웃 XML 파일을 사용하여 프래그먼트를 액티비티에 추가하기 _ 297 29.4 코드에서 프래그먼트를 추가하고 관리하기 _ 299 29.5 프래그먼트 이벤트 처리하기 _ 301 29.6 프래그먼트 간의 통신 구현하기 _ 302 29.7 요약 _ 304 CHAPTER 30 안드로이드 스튜디오에서 프래그먼트 사용하기 ― 예제 프로젝트 _ 305 30.1 예제 프래그먼트 애플리케이션 개요 _ 305 30.2 예제 프로젝트 생성하기 _ 306 30.3 첫 번째 프래그먼트 레이아웃 생성하기 _ 306 30.4 첫 번째 프래그먼트 클래스 생성하기 _ 308 30.5 두 번째 프래그먼트 레이아웃 생성하기 _ 310 30.6 프래그먼트를 액티비티에 추가하기 _ 312 30.7 ToolbarFragment가 액티비티와 통신하게 만들기 _ 315 30.8 액티비티에서 TextFragment로 통신하기 _ 320 30.9 애플리케이션 테스트하기 _ 321 30.10 요약 _ 322 CHAPTER 31 오버플로 메뉴 생성과 관리 _ 323 31.1 오버플로 메뉴 _ 323 31.2 오버플로 메뉴 생성하기 _ 324 31.3 오버플로 메뉴 보여주기 _ 325 31.4 메뉴 항목 선택에 응답하기 _ 326 31.5 체크 가능한 항목 그룹 생성하기 _ 326 31.6 안드로이드 스튜디오 메뉴 편집기 _ 328 31.7 예제 프로젝트 생성하기 _ 329 31.8 메뉴 항목 변경하기 _ 329 31.9 onOptionsItemSelected() 메서드 변경하기 _ 332 31.10 애플리케이션 테스트하기 _ 333 31.11 요약 _ 334 CHAPTER 32 안드로이드 전환 프레임워크 _ 335 32.1 안드로이드 전환과 장면 _ 336 32.2 전환에 인터폴레이터 사용하기 _ 337 32.3 장면 전환 사용하기 _ 338 32.4 코드의 커스텀 전환과 TransitionSet _ 339 32.5 XML의 커스텀 전환과 TransitionSet _ 341 32.6 인터폴레이터 사용하기 _ 342 32.7 커스텀 인터폴레이터 생성하기 _ 345 32.8 beginDelayedTransition 메서드 사용하기 _ 346 32.9 요약 _ 346 CHAPTER 33 beginDelayedTransition을 사용한 안드로이드 전환 _ 348 33.1 안드로이드 스튜디오 TransitionDemo 프로젝트 생성하기 _ 348 33.2 프로젝트 파일 준비하기 _ 349 33.3 beginDelayedTransition 애니메이션 구현하기 _ 349 33.4 우리 입맛에 맞는 전환 만들기 _ 352 33.5 요약 _ 354 CHAPTER 34 안드로이드 장면 전환 구현하기 _ 355 34.1 장면 전환 프로젝트 개요 _ 355 34.2 안드로이드 스튜디오 SceneTransitions 프로젝트 생성하기 _ 355 34.3 루트 컨테이너를 확인하고 준비하기 _ 356 34.4 첫 번째 장면 디자인하기 _ 356 34.5 두 번째 장면 디자인하기 _ 358 34.6 첫 번째 장면 보여주기 _ 359 34.7 두 번째 장면 로드하기 _ 360 34.8 전환 구현하기 _ 360 34.9 전환 파일 추가하기 _ 361 34.10 전환 세트의 로딩과 사용 _ 362 34.11 부가적인 전환 구성하기 _ 363 34.12 요약 _ 364 CHAPTER 35 플로팅 액션 버튼과 스낵바 사용하기 _ 365 35.1 머티리얼 디자인 _ 365 35.2 디자인 라이브러리 _ 366 35.3 플로팅 액션 버튼(FAB) _ 366 35.4 스낵바 _ 367 35.5 예제 프로젝트 생성하기 _ 368 35.6 프로젝트 살펴보기 _ 368 35.7 플로팅 액션 버튼 변경하기 _ 370 35.8 ListView를 콘텐트 레이아웃에 추가하기 _ 373 35.9 ListView에 항목 추가하기 _ 373 35.10 액션을 스낵바에 추가하기 _ 376 35.11 요약 _ 378 CHAPTER 36 탭 인터페이스 생성하기 _ 379 36.1 ViewPager 개요 _ 379 36.2 TabLayout 컴포넌트 개요 _ 380 36.3 TabLayoutDemo 프로젝트 생성하기 _ 380 36.4 첫 번째 프래그먼트 생성하기 _ 381 36.5 프래그먼트 복제하기 _ 382 36.6 TabLayout과 ViewPager 추가하기 _ 384 36.7 Pager 어댑터 생성하기 _ 385 36.8 초기화 작업하기 _ 386 36.9 애플리케이션 테스트하기 _ 389 36.10 TabLayout 커스터마이징 _ 390 36.11 아이콘 탭 항목 보여주기 _ 391 36.12 요약 _ 392 CHAPTER 37 RecyclerView와 CardView 사용하기 _ 393 37.1 RecyclerView 개요 _ 393 37.2 CardView 개요 _ 396 37.3 라이브러리를 프로젝트에 추가하기 _ 398 37.4 요약 _ 398 CHAPTER 38 RecyclerView와 CardView 예제 프로젝트 _ 399 38.1 CardDemo 프로젝트 생성하기 _ 399 38.2 플로팅 액션 버튼 삭제하기 _ 400 38.3 RecyclerView와 CardView 라이브러리 추가하기 _ 400 38.4 CardView 레이아웃 디자인하기 _ 401 38.5 RecyclerView 추가하기 _ 402 38.6 RecyclerView 어댑터 생성하기 _ 403 38.7 이미지 파일 추가하기 _ 406 38.8 RecyclerView 컴포넌트 초기화하기 _ 407 38.9 애플리케이션 테스트하기 _ 408 38.10 카드 선택에 응답하기 _ 408 38.11 요약 _ 410 CHAPTER 39 앱 바와 컬랩싱 툴바 레이아웃 사용하기 _ 411 39.1 AppBar 개요 _ 411 39.2 예제 프로젝트 _ 412 39.3 RecyclerView와 Toolbar 연동시키기 _ 413 39.4 컬랩싱 툴바 레이아웃 개요 _ 415 39.5 제목과 스크림 색상 변경하기 _ 419 39.6 요약 _ 420 CHAPTER 40 내비게이션 드로어 구현하기 _ 421 40.1 내비게이션 드로어 개요 _ 421 40.2 드로어를 열거나 닫기 _ 423 40.3 드로어 항목 선택에 응답하기 _ 424 40.4 내비게이션 드로어 액티비티 템플릿 사용하기 _ 425 40.5 내비게이션 드로어 템플릿으로 프로젝트 생성하기 _ 425 40.6 템플릿 레이아웃 리소스 파일 _ 426 40.7 헤더 색상 리소스 파일 _ 426 40.8 템플릿 메뉴 리소스 파일 _ 427 40.9 템플릿 코드 _ 427 40.10 앱 실행하기 _ 428 40.11 요약 _ 429 CHAPTER 41 안드로이드 스튜디오 마스터/디테일 플로 _ 430 41.1 마스터디테일 플로 _ 430 41.2 마스터디테일 플로 액티비티 생성하기 _ 432 41.3 마스터디테일 플로 템플릿 살펴보기 _ 434 41.4 마스터디테일 플로 템플릿 변경하기 _ 436 41.5 콘텐트 모델 변경하기 _ 436 41.6 디테일 패널 변경하기 _ 438 41.7 WebsiteDetailFragment 클래스 변경하기 _ 439 41.8 WebsiteListActivity 클래스 수정하기 _ 441 41.9 매니페스트 퍼미션 추가하기 _ 441 41.10 애플리케이션 실행하기 _ 442 41.11 요약 _ 443 CHAPTER 42 안드로이드 인텐트 개요 _ 444 42.1 인텐트 개요 _ 444 42.2 명시적 인텐트 _ 445 42.3 액티비티에서 데이터 반환하기 _ 447 42.4 암시적 인텐트 _ 448 42.5 인텐트 필터 사용하기 _ 448 42.6 인텐트 사용 가능 여부 확인하기 _ 449 42.7 요약 _ 450 CHAPTER 43 명시적 인텐트 예제 프로젝트 _ 451 43.1 예제 프로젝트 생성하기 _ 451 43.2 ActivityA의 사용자 인터페이스 디자인하기 _ 452 43.3 두 번째 액티비티 클래스 생성하기 _ 453 43.4 ActivityB의 사용자 인터페이스 레이아웃 디자인하기 _ 454 43.5 애플리케이션의 매니페스트 파일 살펴보기 _ 456 43.6 인텐트 생성하기 _ 457 43.7 인텐트 데이터 추출하기 _ 458 43.8 서브 액티비티로 ActivityB 론칭하기 _ 459 43.9 서브 액티비티에서 데이터 반환하기 _ 460 43.10 애플리케이션 테스트하기 _ 461 43.11 요약 _ 462 CHAPTER 44 암시적 인텐트 예제 프로젝트 _ 463 44.1 암시적 인텐트 예제 프로젝트 생성하기 _ 463 44.2 사용자 인터페이스 디자인하기 _ 464 44.3 암시적 인텐트 생성하기 _ 465 44.4 암시적 인텐트로 론칭되는 액티비티 생성하기 _ 466 44.5 사용자 인터페이스에 웹 뷰 추가하기 _ 466 44.6 인텐트 URL 얻기 _ 467 44.7 MyWebView 프로젝트의 매니페스트 파일 변경하기 _ 468 44.8 MyWebView 패키지를 장치에 설치하기 _ 470 44.9 애플리케이션 테스트하기 _ 471 44.10 요약 _ 473 CHAPTER 45 브로드캐스트 인텐트와 브로드캐스트 수신자 _ 474 45.1 브로드캐스트 인텐트 개요 _ 474 45.2 브로드캐스트 수신자 개요 _ 475 45.3 브로드캐스트 수신자로부터 결과 데이터 받기 _ 478 45.4 스티키 브로드캐스트 인텐트 _ 478 45.5 브로드캐스트 인텐트 예제 프로젝트 _ 478 45.6 예제 애플리케이션 생성하기 _ 479 45.7 브로드캐스트 인텐트를 생성하고 전송하기 _ 479 45.8 브로드캐스트 수신자 생성하기 _ 480 45.9 매니페스트 파일에 브로드캐스트 수신자 구성하기 _ 482 45.10 브로드캐스트 애플리케이션 테스트하기 _ 483 45.11 시스템 브로드캐스트 인텐트 리스닝하기 _ 484 45.12 요약 _ 487 CHAPTER 46 스레드와 스레드 핸들러 _ 488 46.1 스레드 개요 _ 488 46.2 애플리케이션의 메인 스레드 _ 488 46.3 스레드 핸들러 _ 489 46.4 기본적인 스레드 예제 프로젝트 _ 489 46.5 새로운 스레드 생성하기 _ 492 46.6 스레드 핸들러 구현하기 _ 493 46.7 핸들러에게 메시지 전달하기 _ 495 46.8 요약 _ 497 CHAPTER 47 스타트 서비스와 바운드 서비스 개요 _ 499 47.1 스타트 서비스 _ 499 47.2 인텐트 서비스 _ 500 47.3 바운드 서비스 _ 501 47.4 서비스 생명주기 _ 502 47.5 소멸된 서비스 재시작 옵션 제어하기 _ 502 47.6 매니페스트 파일에 서비스 선언하기 _ 503 47.7 시스템 구동 시 서비스 시작시키기 _ 504 47.8 요약 _ 505 CHAPTER 48 스타트 서비스 구현 예제 프로젝트 _ 506 48.1 예제 프로젝트 생성하기 _ 506 48.2 Service 클래스 생성하기 _ 507 48.3 서비스를 매니페스트 파일에 추가하기 _ 509 48.4 서비스 시작시키기 _ 509 48.5 인텐트 서비스 테스트하기 _ 510 48.6 Service 클래스 사용하기 _ 511 48.7 새로운 서비스 생성하기 _ 511 48.8 사용자 인터페이스 변경하기 _ 513 48.9 애플리케이션 실행하기 _ 514 48.10 서비스를 처리하는 새로운 스레드 생성하기 _ 515 48.11 요약 _ 517 CHAPTER 49 로컬 바운드 서비스 예제 프로젝트 _ 518 49.1 바운드 서비스 이해하기 _ 518 49.2 바운드 서비스 상호작용 옵션 _ 519 49.3 로컬 바운드 서비스 예제 프로젝트 _ 519 49.4 바운드 서비스를 프로젝트에 추가하기 _ 520 49.5 Binder 구현하기 _ 520 49.6 클라이언트를 서비스에 바인딩하기 _ 523 49.7 예제 프로젝트 마무리하기 _ 525 49.8 애플리케이션 테스트하기 _ 527 49.9 요약 _ 528 CHAPTER 50 원격 바운드 서비스 예제 프로젝트 _ 529 50.1 클라이언트에서 원격 서비스로 통신하기 _ 529 50.2 예제 애플리케이션 생성하기 _ 530 50.3 사용자 인터페이스 디자인하기 _ 530 50.4 원격 바운드 서비스 구현하기 _ 530 50.5 원격 서비스를 매니페스트 파일에 구성하기 _ 532 50.6 원격 서비스를 론칭하고 바인딩하기 _ 533 50.7 원격 서비스에 메시지 전송하기 _ 534 50.8 요약 _ 536 CHAPTER 51 안드로이드 7의 알림 개요 _ 537 51.1 알림 개요 _ 537 51.2 NotifyDemo 프로젝트 생성하기 _ 539 51.3 사용자 인터페이스 디자인하기 _ 539 51.4 두 번째 액티비티 생성하기 _ 540 51.5 알림을 생성하고 전달하기 _ 541 51.6 알림에서 액티비티를 시작시키기 _ 543 51.7 알림에 액션 추가하기 _ 544 51.8 알림에 소리 추가하기 _ 545 51.9 알림 메시지 묶기 _ 546 51.10 요약 _ 549 CHAPTER 52 안드로이드 7 알림의 직접 응답 구현 _ 550 52.1 DirectReply 프로젝트 생성하기 _ 550 52.2 사용자 인터페이스 디자인하기 _ 551 52.3 RemoteInput 객체 생성하기 _ 551 52.4 PendingIntent 객체 생성하기 _ 553 52.5 응답 액션 생성하기 _ 553 52.6 직접 응답 입력 데이터 수신하기 _ 556 52.7 알림 변경하기 _ 557 52.8 요약 _ 558 CHAPTER 53 안드로이드 스튜디오에서 Firebase 사용하기 _ 559 53.1 Firebase란? _ 559 53.2 Firebase에 서명하기 _ 560 53.3 FirebaseNotify 프로젝트 생성하기 _ 561 53.4 사용자 인터페이스 구성하기 _ 561 53.5 프로젝트를 Firebase에 연결하기 _ 561 53.6 새로운 Firebase 프로젝트 생성하기 _ 563 53.7 google-services.json 파일 _ 563 53.8 Firebase 라이브러리 추가하기 _ 564 53.9 요약 _ 566 CHAPTER 54 Firebase 원격 알림 사용하기 _ 567 54.1 Firebase 알림 전송하기 _ 567 54.2 알림 메시지 수신하기 _ 570 54.3 알림에 맞춤 데이터 포함시키기 _ 570 54.4 포그라운드 앱의 알림 처리하기 _ 572 54.5 요약 _ 574 CHAPTER 55 안드로이드 7의 다중 창 지원 개요 _ 575 55.1 분할 화면과 자유형식 및 PIP 모드 _ 575 55.2 다중 창 모드로 전환하기 _ 577 55.3 자유형식 모드의 지원 여부 확인하기 _ 579 55.4 다중 창 지원을 앱에서 활성화하기 _ 580 55.5 다중 창 관련 속성 지정하기 _ 580 55.6 액티비티에서 다중 창 모드인지 검사하기 _ 581 55.7 다중 창 관련 통지 받기 _ 582 55.8 다중 창 모드에서 액티비티를 시작시키기 _ 582 55.9 자유형식 모드로 실행되는 액티비티의 크기와 위치 구성하기 _ 583 55.10 요약 _ 584 CHAPTER 56 다중 창 예제 프로젝트 _ 585 56.1 다중 창 프로젝트 생성하기 _ 585 56.2 FirstActivity의 사용자 인터페이스 디자인하기 _ 585 56.3 두 번째 액티비티 추가하기 _ 586 56.4 두 번째 액티비티 시작시키기 _ 587 56.5 다중 창 모드 활성화하기 _ 588 56.6 다중 창 지원 테스트하기 _ 589 56.7 두 번째 액티비티를 다른 창에서 시작시키기 _ 590 56.8 자유형식 창의 위치와 크기 변경하기 _ 591 56.9 요약 _ 592 CHAPTER 57 안드로이드 SQLite 데이터베이스 개요 _ 593 57.1 데이터베이스 테이블 이해하기 _ 593 57.2 데이터베이스 스키마 개요 _ 594 57.3 열과 데이터 타입 _ 594 57.4 데이터베이스 행 _ 594 57.5 기본 키 개요 _ 595 57.6 SQLite란? _ 595 57.7 SQL _ 596 57.8 AVD에서 SQLite 사용해보기 _ 596 57.9 안드로이드 SQLite 자바 클래스 _ 600 57.10 요약 _ 602 CHAPTER 58 TableLayout과 TableRow 개요 _ 603 58.1 TableLayout과 TableRow _ 603 58.2 데이터베이스 프로젝트 생성하기 _ 605 58.3 사용자 인터페이스에 TableLayout 추가하기 _ 605 58.4 TableRow 구성하기 _ 606 58.5 버튼을 레이아웃에 추가하기 _ 608 58.6 레이아웃 마진 조정하기 _ 609 58.7 요약 _ 610 CHAPTER 59 안드로이드 SQLite 데이터베이스 예제 프로젝트 _ 611 59.1 데이터베이스 예제 개요 _ 611 59.2 데이터 모델 생성하기 _ 612 59.3 데이터 핸들러 구현하기 _ 613 59.4 액티비티 이벤트 메서드 구현하기 _ 618 59.5 애플리케이션 테스트하기 _ 620 59.6 요약 _ 621 CHAPTER 60 콘텐트 제공자 이해하기 _ 622 60.1 콘텐트 제공자란? _ 622 60.2 콘텐트 제공자 _ 623 60.3 콘텐트 URI _ 624 60.4 콘텐트 리졸버 _ 625 60.5 매니페스트 요소 _ 625 60.6 요약 _ 626 CHAPTER 61 콘텐트 제공자 구현하기 _ 627 61.1 Database 프로젝트 활용하기 _ 627 61.2 콘텐트 제공자 패키지 추가하기 _ 628 61.3 콘텐트 제공자 클래스 생성하기 _ 628 61.4 Authority와 콘텐트 URI 구성하기 _ 630 61.5 콘텐트 제공자에 UriMatcher 구현하기 _ 631 61.6 콘텐트 제공자의 onCreate() 메서드 구현하기 _ 632 61.7 콘텐트 제공자의 insert() 메서드 구현하기 _ 633 61.8 콘텐트 제공자의 query() 메서드 구현하기 _ 634 61.9 콘텐트 제공자의 update() 메서드 구현하기 _ 636 61.10 콘텐트 제공자의 delete() 메서드 구현하기 _ 637 61.11 매니페스트 파일에 콘텐트 제공자 선언하기 _ 638 61.12 데이터베이스 핸들러 변경하기 _ 639 61.13 요약 _ 642 CHAPTER 62 구글 클라우드 스토리지 액세스하기 _ 643 62.1 스토리지 액세스 프레임워크 _ 643 62.2 스토리지 액세스 프레임워크 사용하기 _ 645 62.3 피커의 파일 내역 선별하기 _ 645 62.4 인텐트 결과 처리하기 _ 647 62.5 파일의 내용 읽기 _ 648 62.6 파일에 내용 쓰기 _ 649 62.7 파일 삭제하기 _ 649 62.8 파일의 지속적인 액세스 얻기 _ 650 62.9 요약 _ 650 CHAPTER 63 안드로이드 스토리지 액세스 프레임워크 예제 프로젝트 _ 652 63.1 스토리지 액세스 프레임워크 예제 프로젝트 개요 _ 652 63.2 스토리지 액세스 프레임워크 예제 프로젝트 생성 _ 653 63.3 사용자 인터페이스 디자인하기 _ 653 63.4 요청 코드 선언하기 _ 654 63.5 새로운 스토리지 파일 생성하기 _ 655 63.6 onActivityResult() 메서드 _ 657 63.7 스토리지 파일에 데이터 저장하기 _ 659 63.8 스토리지 파일을 열고 읽기 _ 661 63.9 스토리지 액세스 애플리케이션 테스트하기 _ 664 63.10 요약 _ 665 CHAPTER 64 비디오 재생 구현하기 _ 666 64.1 안드로이드 VideoView 클래스 개요 _ 666 64.2 안드로이드 MediaController 클래스 개요 _ 667 64.3 비디오 재생 테스트 관련 사항 _ 668 64.4 비디오 재생 예제 프로젝트 생성하기 _ 668 64.5 VideoPlayer 애플리케이션의 레이아웃 디자인하기 _ 669 64.6 VideoView 구성하기 _ 670 64.7 인터넷 퍼미션 추가하기 _ 670 64.8 MediaController를 VideoView에 추가하기 _ 672 64.9 onPreparedListener 설정하기 _ 673 64.10 요약 _ 674 CHAPTER 65 카메라 인텐트를 사용한 비디오 녹화와 이미지 캡처 _ 675 65.1 카메라 지원 여부 확인하기 _ 675 65.2 비디오 캡처 인텐트 호출하기 _ 676 65.3 이미지 캡처 인텐트 호출하기 _ 677 65.4 안드로이드 스튜디오 비디오 녹화 프로젝트 생성하기 _ 678 65.5 사용자 인터페이스 레이아웃 디자인하기 _ 678 65.6 카메라 확인하기 _ 679 65.7 비디오 캡처 인텐트 론칭하기 _ 680 65.8 인텐트의 반환 결과 처리하기 _ 681 65.9 애플리케이션 테스트하기 _ 682 65.10 요약 _ 682 CHAPTER 66 런타임 퍼미션 요청하기 _ 683 66.1 보통과 위험 퍼미션 이해하기 _ 683 66.2 퍼미션 예제 프로젝트 생성하기 _ 685 66.3 퍼미션 확인하기 _ 685 66.4 런타임 시에 퍼미션 요청하기 _ 687 66.5 퍼미션 요청 이유 제공하기 _ 689 66.6 퍼미션 앱 테스트하기 _ 691 66.7 요약 _ 692 CHAPTER 67 안드로이드 오디오 녹음과 재생하기 _ 693 67.1 오디오 재생하기 _ 693 67.2 MediaRecorder 클래스를 사용해서 오디오 녹음하기 _ 694 67.3 예제 프로젝트 개요 _ 696 67.4 AudioApp 프로젝트 생성하기 _ 696 67.5 사용자 인터페이스 디자인하기 _ 697 67.6 마이크 확인하기 _ 698 67.7 액티비티 초기화하기 _ 699 67.8 recordAudio() 메서드 구현하기 _ 700 67.9 stopAudio() 메서드 구현하기 _ 701 67.10 playAudio() 메서드 구현하기 _ 702 67.11 매니페스트 파일에 퍼미션 구성하기 _ 702 67.12 애플리케이션 테스트하기 _ 706 67.13 요약 _ 706 CHAPTER 68 구글 맵 API 사용하기 _ 707 68.1 구글 맵 안드로이드 API의 구성 요소 _ 707 68.2 구글 맵 프로젝트 생성하기 _ 709 68.3 개발자 서명 얻기 _ 709 68.4 애플리케이션 테스트하기 _ 712 68.5 지오코딩과 역-지오코딩 이해하기 _ 713 68.6 지도를 애플리케이션에 추가하기 _ 715 68.7 현재 위치 퍼미션 요청하기 _ 716 68.8 사용자의 현재 위치 보여주기 _ 718 68.9 지도 타입 변경하기 _ 719 68.10 맵 컨트롤을 사용자에게 보여주기 _ 720 68.11 지도 제스처 처리하기 _ 721 68.12 지도 표식 생성하기 _ 723 68.13 맵 카메라 제어하기 _ 724 68.14 요약 _ 726 CHAPTER 69 안드로이드 인쇄 프레임워크 사용하기 _ 727 69.1 안드로이드 인쇄 아키텍처 _ 727 69.2 인쇄 서비스 플러그인 _ 728 69.3 구글 클라우드 인쇄 _ 728 69.4 구글 드라이브로 인쇄하기 _ 729 69.5 PDF로 저장하기 _ 729 69.6 안드로이드 장치에서 인쇄하기 _ 730 69.7 안드로이드 애플리케이션에 포함되는 인쇄 지원 옵션 _ 732 69.8 요약 _ 737 CHAPTER 70 HTML과 웹 콘텐트 인쇄 예제 프로젝트 _ 738 70.1 HTML 인쇄 예제 애플리케이션 생성하기 _ 738 70.2 동적 HTML 콘텐트 인쇄하기 _ 739 70.3 기존 웹 페이지 인쇄 예제 애플리케이션 생성하기 _ 742 70.4 플로팅 액션 버튼 삭제하기 _ 743 70.5 사용자 인터페이스 레이아웃 디자인하기 _ 743 70.6 웹 페이지를 WebView에 로드하기 _ 745 70.7 인쇄 메뉴 옵션 추가하기 _ 746 70.8 요약 _ 749 CHAPTER 71 안드로이드 커스텀 문서 인쇄 _ 750 71.1 안드로이드 커스텀 문서 인쇄 개요 _ 750 71.2 커스텀 문서 인쇄 프로젝트 준비하기 _ 752 71.3 커스텀 인쇄 어댑터 생성하기 _ 753 71.4 onLayout() 콜백 메서드 구현하기 _ 754 71.5 onWrite() 콜백 메서드 구현하기 _ 758 71.6 페이지가 인쇄 범위에 있는지 확인하기 _ 761 71.7 페이지 캔버스에 콘텐트 그리기 _ 762 71.8 인쇄 작업 시작시키기 _ 765 71.9 애플리케이션 테스트하기 _ 766 71.10 요약 _ 767 CHAPTER 72 안드로이드 지문 인증 구현하기 _ 768 72.1 지문 인증 개요 _ 768 72.2 지문 인증 프로젝트 생성하기 _ 769 72.3 장치의 지문 인증 구성하기 _ 769 72.4 지문 퍼미션을 매니페스트 파일에 추가하기 _ 770 72.5 지문 아이콘 다운로드하기 _ 771 72.6 사용자 인터페이스 디자인하기 _ 772 72.7 KeyguardManager와 FingerprintManager 사용하기 _ 773 72.8 장치의 보안 설정 확인하기 _ 774 72.9 안드로이드 Keystore와 KeyGenerator 사용하기 _ 775 72.10 키 생성하기 _ 777 72.11 Cipher 초기화하기 _ 779 72.12 CryptoObject 인스턴스 생성하기 _ 781 72.13 지문 인증 처리 클래스 구현하기 _ 782 72.14 프로젝트 테스트하기 _ 785 72.15 요약 _ 786 CHAPTER 73 서로 다른 안드로이드 장치와 화면 처리하기 _ 787 73.1 서로 다른 장치 화면 처리하기 _ 787 73.2 화면 크기에 맞는 레이아웃 생성하기 _ 788 73.3 안드로이드 스튜디오에서 다양한 크기의 레이아웃 생성하기 _ 789 73.4 서로 다른 이미지 제공하기 _ 790 73.5 하드웨어 지원 여부 확인하기 _ 791 73.6 특정 장치에 맞는 애플리케이션 바이너리 제공하기 _ 792 73.7 요약 _ 792 CHAPTER 74 안드로이드 애플리케이션 릴리스하기 _ 793 74.1 릴리스 준비 절차 _ 793 74.2 빌드 변이 변경하기 _ 794 74.3 ProGuard 활성화하기 _ 795 74.4 키스토어 파일 생성하기 _ 795 74.5 개인 키 생성하기 _ 796 74.6 애플리케이션 APK 파일 생성하기 _ 797 74.7 구글 플레이 개발자 콘솔 계정 등록하기 _ 799 74.8 새로운 APK 버전을 구글 플레이 개발자 콘솔에 업로드하기 _ 799 74.9 APK 파일 분석하기 _ 801 74.10 요약 _ 803 CHAPTER 75 구글 플레이 인앱 결제를 애플리케이션에 통합하기 _ 804 75.1 구글 플레이 결제 라이브러리 설치하기 _ 804 75.2 인앱 결제 예제 프로젝트 생성하기 _ 805 75.3 결제 퍼미션을 매니페스트 파일에 추가하기 _ 806 75.4 IInAppBillingService.aidl 파일을 프로젝트에 추가하기 _ 807 75.5 유틸리티 클래스를 프로젝트에 추가하기 _ 808 75.6 사용자 인터페이스 디자인하기 _ 810 75.7 Click Me! 버튼 구현하기 _ 811 75.8 구글 플레이 개발자 콘솔과 구글 계정 _ 812 75.9 애플리케이션의 공개 인증 키 받기 _ 812 75.10 애플리케이션에서 구글 플레이 결제 설정하기 _ 814 75.11 구글 플레이 인앱 결제 구입을 초기 설정하기 _ 815 75.12 onActivityResult 메서드 구현하기 _ 816 75.13 구입 종료 리스너 구현하기 _ 817 75.14 구입 제품 소비하기 _ 818 75.15 IabHelper 인스턴스 해제하기 _ 819 75.16 Security.java 파일 변경하기 _ 820 75.17 인앱 결제 애플리케이션 테스트하기 _ 821 75.18 릴리스용 APK 빌드하기 _ 822 75.19 새로운 인앱 제품 생성하기 _ 823 75.20 알파 배포 채널로 애플리케이션 제출하기 _ 824 75.21 인앱 결제 테스트 계정 추가하기 _ 824 75.22 그룹 테스트 구성하기 _ 826 75.23 인앱 구입의 문제 해결하기 _ 826 75.24 요약 _ 828 CHAPTER 76 안드로이드 스튜디오의 그래들 개요 _ 829 76.1 그래들 개요 _ 829 76.2 그래들과 안드로이드 스튜디오 _ 830 76.3 최상위 수준의 그래들 빌드 파일 _ 832 76.4 모듈 수준의 그래들 빌드 파일들 _ 833 76.5 빌드 파일에 서명 설정 구성하기 _ 837 76.6 명령행에서 그래들 작업 실행하기 _ 838 76.7 요약 _ 840 CHAPTER 77 안드로이드 스튜디오 그래들 빌드 예제 프로젝트 _ 841 77.1 빌드 변이 예제 프로젝트 생성하기 _ 842 77.2 빌드 플레이버를 모듈 빌드 파일에 추가하기 _ 842 77.3 플레이버를 프로젝트 구조에 추가하기 _ 845 77.4 리소스 파일을 플레이버에 추가하기 _ 847 77.5 빌드 플레이버 테스트하기 _ 848 77.6 빌드 변이와 클래스 파일 _ 849 77.7 빌드 플레이버에 패키지 추가하기 _ 849 77.8 각 플레이버의 액티비티 클래스 변경하기 _ 850 77.9 요약 _ 851 찾아보기 _ 853 ※ 부록 A, B는 독자들의 이해를 위해 옮긴이가 작성한 특별 부록입니다. 아래의 사이트에서 예제 프로젝트 파일과 함께 무료로 다운로드받으실 수 있습니다. https://github.com/Jpub/AndroidStudio3 APPENDIX A 코틀린 핵심 파악하기: 개요와 실습 환경 구축 A.1 코틀린 언어 개요 A.2 자바 JDK 설치하기 A.3 코틀린 컴파일러 설치하기 A.4 코틀린으로 네이티브 애플리케이션 작성과 실행하기 A.5 요약 APPENDIX B 코틀린 핵심 파악하기: 구성 요소와 문법 B.1 코틀린 프로그램 구조 B.2 코틀린 변수 B.3 코틀린의 타입 B.4 연산자와 연산자 오버로딩 B.5 Null 타입 처리 메커니즘 B.6 코드 실행 제어 B.7 함수 B.8 클래스와 인터페이스 B.9 람다식 B.10 예외 처리 B.11 package와 import