간편결제, 신용카드 청구할인
인터파크 롯데카드 5% (31,640원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (23,310원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (26,640원)
(최대할인 4만원 / 2만원 이상 결제)
Close

핵심만 골라 배우는 안드로이드 스튜디오3 & 프로그래밍 : 안드로이드 8

원제 : Android Studio Development Essentials: Android 7 Edition
소득공제

2013년 9월 9일 이후 누적수치입니다.

공유하기
정가

37,000원

  • 33,300 (10%할인)

    1,850P (5%적립)

할인혜택
적립혜택
  • S-Point 적립은 마이페이지에서 직접 구매확정하신 경우만 적립 됩니다.
추가혜택
  • 6/14(금) 이내 발송 예정  (서울시 강남구 삼성로 512)
  • 무료배송
  • 주문수량
    감소 증가
    • 이벤트/기획전

    • 연관도서(6)

    • 상품권

    AD

    라이브북

    책소개

    최신 안드로이드 스튜디오 설치부터 안드로이드 개발 기초까지!

    이 책은 안드로이드 스튜디오 기반의 애플리케이션 개발과 테스트에 필요한 환경 설정, 그리고 안드로이드 스튜디오의 주요 기능과 사용법을 간명한 예제 코드로 설명한다. 또한, 안드로이드 스튜디오 3의 각종 최신 기능에 대한 내용도 국내 최초로 포함하고 있다.

    출판사 서평

    특별부록 ‘Kotlin(코틀린) 핵심 문법’ 무료 제공
    최신 안드로이드 스튜디오와 안드로이드 OS 반영!
    안드로이드 스튜디오 설치부터 안드로이드 개발 기초까지!

    이 책은 안드로이드 스튜디오 기반의 애플리케이션 개발과 테스트에 필요한 환경 설정, 그리고 안드로이드 스튜디오의 주요 기능과 사용법을 간명한 예제 코드로 설명한다. 또한, 안드로이드 스튜디오 3의 각종 최신 기능에 대한 내용도 국내 최초로 포함하고 있다.

    안드로이드 스튜디오를 사용해서 애플리케이션과 사용자 인터페이스를 설계하고 만드는 방법에 기본적으로 충실한 이 책은, 다양한 종류의 안드로이드 스튜디오 프로젝트를 직접 만들면서 각종 뷰 컴포넌트와 기본적인 프로그래밍 기법도 배울 수 있도록 구성하였다.

    안드로이드 애플리케이션 개발에 필요한 필수 내용은 물론 고급 주제인 데이터베이스, 콘텐트 제공자, 인텐트, 터치스크린 처리, 동작 인식, 카메라 사용, 비디오와 오디오의 재생과 수록, 인쇄, 애니메이션, 클라우드 기반 파일 스토리지의 사용법 등도 다룬다. 그리고 구글 맵 API를 사용한 지도 구현, 구글 플레이 개발자 콘솔에 애플리케이션을 게시하고 인앱 결제를 하는 방법 등 구글 플레이와 연관된 내용도 설명한다. 또한, 머티리얼 디자인을 구현하는 새로운 컴포넌트인 플로팅 액션 버튼, 스낵바, 탭 인터페이스, 카드 뷰, 앱 바, 컬랩싱 툴바, 내비게이션 드로어, 런타임 퍼미션 등도 배운다.

    더불어 최신의 안드로이드 스튜디오 3 버전에서 새롭게 변경된 레이아웃 편집기의 기능과 사용법을 알려주며, 안드로이드 7부터 새로 추가된 ConstraintLayout 클래스, 직접 응답 알림, Firebase 서비스, 다중 창 지원 기능의 개념과 구현 방법도 배운다.

    이 책에서는 여러분이 자바 프로그래밍 경험이 있다고 간주하므로 자바 언어에 대해서 별도로 언급하지는 않는다. 윈도우나 맥 또는 리눅스가 실행되는 컴퓨터가 있고, 안드로이드 스튜디오와 안드로이드 SDK를 다운로드하였다면 시작할 준비가 된 것이다. 독자 여러분을 환영한다!

    목차

    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

    본문중에서

    안드로이드 애플리케이션을 개발하기에 앞서 제일 먼저 할 일은 우리의 컴퓨터 시스템을 개발 플랫폼으로 구성하는 것이다. 그러기 위해서는 자바 JDK(Java Development Kit)와 안드로이드 스튜디오 IDE 및 안드로이드 SDK를 설치해야 한다. 단, 안드로이드 SDK는 안드로이드 스튜디오 패키지에 포함되어 제공되므로 별도로 다운로드할 필요는 없다. _6쪽

    만일 사용 중인 컴퓨터에 웹 캠(web cam)이 있다면 Camera 옵션의 전면 카메라(Front)나 후면 카메라(Back)를 Webcam0으로 선택해서 에뮬레이터가 그 카메라를 사용하게 할 수 있다. 또는 Emulated를 선택해서 마치 카메라가 있는 것처럼 처리해주는 모의 카메라를 선택해도 된다. 이때는 애플리케이션에서 카메라 기능을 사용할 때 에뮬레이터가 임의로 이미지를 만들어준다. 그러나 애플리케이션에서 카메라 기능이 필요 없을 때는 None을 선택하면 된다. 여기서는 기본값인 None을 선택한다. _64쪽

    안드로이드 스튜디오 레이아웃 편집기를 사용하면 쉽고 생산성 높은 방법으로 안드로이드 애플리케이션의 사용자 인터페이스를 디자인할 수 있다. 이번 장에서는 안드로이드 스튜디오 레이아웃 편집기를 사용해서 ConstraintLayout 기반의 사용자 인터페이스를 생성하는 방법을 알아본다. 또한, 레이아웃 검사기와 계층 구조 뷰어 도구의 사용법도 설명한다. _209쪽

    앞 장에서는 머티리얼 디자인의 개념과 디자인 지원 라이브러리의 컴포넌트인 플로팅 액션 버튼과 스낵바를 알아보았다. 이번 장에서는 또 다른 디자인 라이브러리 컴포넌트인 TabLayout의 사용법을 보여줄 것이다. TabLayout은 ViewPager 클래스와 함께 사용되어 안드로이드 액티비티의 탭 기반(tabbed) 인터페이스를 생성할 수 있다. _379쪽

    Firebase 알림 서비스에서는 키와 값이 쌍으로 된 데이터를 알림에 전달하는 옵션을 제공한다. 이 데이터는 장치에서 해당 알림이 선택될 때 시작되는 액티비티에서 수신할 수 있다. 이 데이터는 Firebase 콘솔의 메시지 작성 화면(그림 54-3)에 있는 고급 옵션에서 지정한다. 예를 들어, 그림 54-7에서는 두 개의 맞춤 데이터를 알림에 추가하는 것을 보여준다. _570쪽

    저자소개

    닐 스미스 [저] 신작알림 SMS신청
    생년월일 -

    20년 이상의 IT 개발 경력을 지녔다. 특히 프로그래밍 언어와 기업용 개발 도구, 사용자 인터페이스 디자인을 전문으로 해 왔으며, 시스템 프로그래밍과 웹 개발, 마케팅까지 담당하기도 했다. 닐은 IT 학사 외에 Network+, Project+, 자바와 마이크로소프트 MCP 자격증들을 가지고 있다. 또한 30여 종의 기술 관련 서적을 집필하였으며, 현재는 미국에서 인터넷 출판과 모바일 애플리케이션 개발 회사인 Payload Media의 공동 창업자이자 CEO로 재직 중이다.

    심재철 [역] 신작알림 SMS신청
    생년월일 -

    현재 프리랜서로, 데이터베이스/모바일 시스템 컨설팅과 강의를 하고 있다. 또한, 20년 넘게 데이터베이스와 객체지향 시스템 설계 및 개발 프로젝트와 건설/금융 분야 애플리케이션 개발 등에 참여했다. 새로운 테크놀로지와 다양한 프로그래밍 언어를 사용해서 실무에 활용하고 가르치는 것을 좋아한다. 저서로는 《핵심만 골라 배우는 코틀린 프로그래밍》이 있으며, 번역서로는 《카프카 핵심 가이드》, 《핵심만 골라 배우는 안드로이드 스튜디오 3 & 프로그래밍》, 《실무에 적용하는 안드로이드 프로그래밍(제2판)》, 《Learn Android Studio》, 《SQLite 마스터북(제2판)》,

    펼쳐보기

    리뷰

    0.0 (총 0건)

    100자평

    작성시 유의사항

    평점
    0/100자
    등록하기

    100자평

    9.5
    (총 0건)

    판매자정보

    • 인터파크도서에 등록된 오픈마켓 상품은 그 내용과 책임이 모두 판매자에게 있으며, 인터파크도서는 해당 상품과 내용에 대해 책임지지 않습니다.

    상호

    (주)교보문고

    대표자명

    안병현

    사업자등록번호

    102-81-11670

    연락처

    1544-1900

    전자우편주소

    callcenter@kyobobook.co.kr

    통신판매업신고번호

    01-0653

    영업소재지

    서울특별시 종로구 종로 1(종로1가,교보빌딩)

    교환/환불

    반품/교환 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청 또는 1:1 문의 게시판 및 고객센터(1577-2555)에서 신청 가능

    반품/교환가능 기간

    변심 반품의 경우 출고완료 후 6일(영업일 기준) 이내까지만 가능
    단, 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내

    반품/교환 비용

    변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
    상품이나 서비스 자체의 하자로 인한 교환/반품은 반송료 판매자 부담

    반품/교환 불가 사유

    ·소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)

    ·소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등

    ·복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집

    ·시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우

    ·전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우

    상품 품절

    공급사(출판사) 재고 사정에 의해 품절/지연될 수 있음

    소비자 피해보상
    환불지연에 따른 배상

    ·상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨

    ·대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

    (주)KG이니시스 구매안전서비스서비스 가입사실 확인

    (주)인터파크커머스는 회원님들의 안전거래를 위해 구매금액, 결제수단에 상관없이 (주)인터파크커머스를 통한 모든 거래에 대하여
    (주)KG이니시스가 제공하는 구매안전서비스를 적용하고 있습니다.

    배송안내

    • 교보문고 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다.

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능합니다.

    • 배송비는 업체 배송비 정책에 따릅니다.

    • - 도서 구매 시 15,000원 이상 무료배송, 15,000원 미만 2,500원 - 상품별 배송비가 있는 경우, 상품별 배송비 정책 적용