이미 소장하고 있다면 판매해 보세요.
옮긴이 머리말 xxiv
베타리더 후기 xxv CHAPTER 1 들어가며 1 1.1 코틀린 개발자에게 2 1.2 코틀린을 처음 접하는 개발자에게 2 1.3 샘플 코드 다운로드 2 CHAPTER 2 안드로이드 스튜디오 개발 환경 설정 3 2.1 시스템 요구사항 3 2.2 안드로이드 스튜디오 패키지 다운로드 4 2.3 안드로이드 스튜디오 설치 4 2.4 안드로이드 스튜디오 설치 마법사 6 2.5 추가 안드로이드 SDK 패키지 설치하기 8 2.6 커맨드라인에서 안드로이드 SDK 도구에 접근할 수 있도록 설정하기 10 2.7 안드로이드 스튜디오 메모리 관리 13 2.8 안드로이드 스튜디오 및 SDK 업데이트 14 2.9 정리 14 CHAPTER 3 컴포즈 프로젝트 개요 15 3.1 프로젝트 개요 15 3.2 프로젝트 만들기 16 3.3 액티비티 만들기 16 3.4 프로젝트 및 SDK 설정 정의하기 17 3.5 예제 프로젝트 미리 보기 19 3.6 메인 액티비티 살펴보기 21 3.7 미리 보기 업데이트 25 3.8 정리 26 CHAPTER 4 컴포즈 예제 프로젝트 27 4.1 시작하기 27 4.2 템플릿 코드 삭제하기 27 4.3 컴포저블의 계층 구조 28 4.4 DemoText 컴포저블 추가하기 29 4.5 DemoText 컴포저블 미리 보기 30 4.6 DemoSlider 컴포저블 추가하기 31 4.7 DemoScreen 컴포저블 추가하기 32 4.8 DemoScreen 컴포저블 미리 보기 34 4.9 대화형 모드에서 테스트하기 35 4.10 프로젝트 완료하기 36 4.11 정리 36 CHAPTER 5 안드로이드 스튜디오에서 AVD 만들기 37 5.1 안드로이드 가상 기기 개요 37 5.2 에뮬레이터 시작하기 39 5.3 AVD에서 애플리케이션 실행하기 40 5.4 여러 기기에서 실행하기 42 5.5 애플리케이션 실행 중지하기 43 5.6 다크 테마 지원하기 43 5.7 별도의 창에서 에뮬레이터 실행하기 44 5.8 기기 프레임 활성화하기 46 5.9 정리 46 CHAPTER 6 안드로이드 스튜디오 에뮬레이터 이용 및 설정하기 47 6.1 에뮬레이터 환경 47 6.2 에뮬레이터 툴바 옵션 48 6.3 줌 모드 다루기 49 6.4 에뮬레이터 창 크기 조정하기 49 6.5 확장 제어 옵션 49 6.6 스냅샷 다루기 52 6.7 지문 에뮬레이션 설정하기 53 6.8 도구 창 모드의 에뮬레이터 55 6.9 정리 55 CHAPTER 7 안드로이드 스튜디오 사용자 인터페이스 살펴보기 56 7.1 시작 화면 56 7.2 기본 창 57 7.3 도구 창 59 7.4 안드로이드 스튜디오 키보드 단축키 62 7.5 스위처 및 최근 파일 탐색 63 7.6 안드로이드 스튜디오 테마 변경하기 64 7.7 정리 65 CHAPTER 8 물리적 안드로이드 기기에서 안드로이드 스튜디오 앱 테스트 하기 66 8.1 ADB 개요 66 8.2 안드로이드 기기에서 USB 디버깅 ADB 활성화하기 67 8.3 USB 연결 문제 해결하기 70 8.4 안드로이드 기기의 무선 디버깅 활성화하기 71 8.5 adb 연결 테스트하기 73 8.6 정리 73 CHAPTER 9 안드로이드 스튜디오 코드 편집기 기본 74 9.1 안드로이드 스튜디오 편집기 74 9.2 코드 모드 78 9.3 편집기 창 분리하기 78 9.4 코드 자동 완성 79 9.5 스테이트먼트 자동 완성 80 9.6 파라미터 정보 81 9.7 파라미터 이름 힌트 81 9.8 코드 생성 81 9.9 코드 접기 83 9.10 빠른 문서 탐색 84 9.11 코드 형식 재지정 85 9.12 샘플 코드 찾기 86 9.13 실시간 템플릿 86 9.14 정리 87 CHAPTER 10 안드로이드 아키텍처 개요 88 10.1 안드로이드 소프트웨어 스택 88 10.2 리눅스 커널 89 10.3 안드로이드 런타임(ART) 89 10.4 안드로이드 라이브러리 89 10.5 애플리케이션 프레임워크 90 10.6 애플리케이션 91 10.7 정리 91 CHAPTER 11 코틀린 개요 92 11.1 코틀린이란 무엇인가? 92 11.2 코틀린과 자바 93 11.3 자바에서 코틀린으로 변환하기 93 11.4 코틀린과 안드로이드 스튜디오 93 11.5 코틀린을 이용해 실험하기 94 11.6 코틀린에서의 세미콜론 95 11.7 정리 95 CHAPTER 12 코틀린 데이터 타입, 변수, 널 허용 96 12.1 코틀린 데이터 타입 96 12.2 뮤터블 변수 100 12.3 이뮤터블 변수 100 12.4 뮤터블/이뮤터블 변수 선언하기 100 12.5 데이터 타입은 객체다 101 12.6 타입 애너테이션과 타입 추론 102 12.7 널 허용 타입 103 12.8 안전 호출 연산자 104 12.9 not-null 어서션 105 12.10 널 허용 타입과 let 함수 105 12.11 초기화 지연 107 12.12 엘비스 연산자 108 12.13 타입 캐스팅 및 타입 확인 108 12.14 정리 109 CHAPTER 13 코틀린 연산자와 표현식 110 13.1 코틀린의 표현식 구문 110 13.2 기본 할당 연산자 110 13.3 코틀린 산술 연산자 111 13.4 증강 할당 연산자 111 13.5 증가/감소 연산자 112 13.6 등치 연산자 113 13.7 부울 논리 연산자 114 13.8 범위 연산자 114 13.9 비트와이즈 연산자 115 13.10 정리 118 CHAPTER 14 코틀린 제어 흐름 119 14.1 반복 제어 흐름 119 14.2 조건부 제어 흐름 124 14.3 정리 127 CHAPTER 15 코틀린 함수와 람다 128 15.1 함수란 무엇인가? 128 15.2 코틀린에서의 함수 선언 128 15.3 코틀린 함수 호출하기 129 15.4 단일 표현식 함수 130 15.5 로컬 함수 130 15.6 반환값 다루기 131 15.7 기본 함수 파라미터 선언하기 131 15.8 가변 길이 함수 파라미터 132 15.9 람다 표현식 132 15.10 고차 함수 134 15.11 정리 135 CHAPTER 16 코틀린 객체 지향 프로그래밍 기초 136 16.1 객체란 무엇인가? 136 16.2 클래스란 무엇인가? 136 16.3 코틀린 클래스 정의하기 136 16.4 클래스에 프로퍼티 추가하기 137 16.5 메서드 정의하기 138 16.6 클래스 인스턴스 선언 및 초기화하기 138 16.7 기본 및 보조 생성자 138 16.8 초기화 블록 141 16.9 메서드 호출과 프로퍼티 접근 141 16.10 커스텀 접근자 142 16.11 중첩된 내부 클래스 143 16.12 컴패니언 객체 144 16.13 정리 146 CHAPTER 17 상속과 서브클래싱 147 17.1 상속, 클래스, 서브클래스 147 17.2 서브클래싱 구문 147 17.3 코틀린 상속 예시 149 17.4 서브클래스 기능 확장하기 150 17.5 상속된 메서드 오버라이드하기 150 17.6 커스텀 보조 생성자 추가하기 152 17.7 SavingsAccount 클래스 이용하기 153 17.8 정리 153 CHAPTER 18 컴포즈 개요 154 18.1 컴포즈 이전의 개발 154 18.2 컴포즈의 선언적 구문 155 18.3 컴포즈는 데이터 주도적이다 156 18.4 정리 156 CHAPTER 19 컴포저블 함수 개요 157 19.1 컴포저블 함수란 무엇인가? 157 19.2 상태 컴포저블과 비상태 컴포저블 158 19.3 컴포저블 함수 구문 158 19.4 파운데이션 컴포저블과 머티리얼 컴포저블 161 19.5 정리 162 CHAPTER 20 컴포즈 상태와 재구성 163 20.1 상태 163 20.2 재구성 163 20.3 StateExample 프로젝트 만들기 164 20.4 컴포저블에서 상태 선언하기 164 20.5 단방향 데이터 흐름 168 20.6 상태 호이스팅 170 20.7 환경 설정 변경을 통한 상태 저장하기 173 20.8 정리 174 CHAPTER 21 CompositionLocal 175 21.1 CompositionLocal 이해하기 175 21.2 CompositionLocal 이용하기 176 21.3 CompLocalDemo 프로젝트 만들기 177 21.4 레이아웃 디자인하기 178 21.5 CompositionLocal 상태 추가하기 179 21.6 CompositionLocal 상태에 접근하기 180 21.7 디자인 테스트하기 180 21.8 정리 182 CHAPTER 22 컴포즈 Slot API 183 22.1 Slot API 이해하기 183 22.2 Slot API 선언하기 184 22.3 Slot API 컴포저블 호출하기 185 22.4 정리 186 CHAPTER 23 컴포즈 Slot API 튜토리얼 187 23.1 프로젝트 개요 187 23.2 SlotApiDemo 프로젝트 만들기 187 23.3 MainActivity 클래스 파일 준비하기 187 23.4 MainScreen 컴포저블 만들기 188 23.5 ScreenContent 컴포저블 추가하기 189 23.6 Checkbox 컴포저블 만들기 190 23.7 ScreenContent Slot API 구현하기 192 23.8 이미지 drawable 리소스 추가하기 193 23.9 TitleImage 컴포저블 만들기 195 23.10 MainScreen 컴포저블 완료하기 195 23.11 프로젝트 미리 보기 197 23.12 정리 198 CHAPTER 24 모디파이어 이용하기 199 24.1 모디파이어 199 24.2 ModifierDemo 프로젝트 만들기 200 24.3 모디파이어 만들기 201 24.4 모디파이어 연결 순서 202 24.5 컴포저블에 모디파이어 지원 추가하기 203 24.6 공통 내장 모디파이어 207 24.7 모디파이어 조합하기 208 24.8 정리 209 CHAPTER 25 Row/Column을 이용해 레이아웃 구성하기 210 25.1 RowColDemo 프로젝트 만들기 210 25.2 Row 컴포저블 211 25.3 Column 컴포저블 212 25.4 Row Column 컴포저블 조합하기 212 25.5 레이아웃 정렬 214 25.6 레이아웃 배열 위치 조정하기 216 25.7 레이아웃 배열 간격 조정하기 218 25.8 Row Column 스코프 모디파이어 219 25.9 스코프 모디파이어 가중치 224 25.10 정리 225 CHAPTER 26 Box 레이아웃 226 26.1 Box 컴포저블 226 26.2 BoxLayout 프로젝트 만들기 226 26.3 TextCell 컴포저블 추가하기 227 26.4 Box 레이아웃 추가하기 227 26.5 Box 정렬 229 26.6 BoxScope 모디파이어 230 26.7 clip() 모디파이어 이용하기 231 26.8 정리 233 CHAPTER 27 커스텀 레이아웃 모디파이어 234 27.1 컴포즈 레이아웃 기본 234 27.2 커스텀 레이아웃 235 27.3 LayoutModifier 프로젝트 만들기 235 27.4 ColorBox 컴포저블 추가하기 235 27.5 커스텀 레이아웃 모디파이어 만들기 236 27.6 기본 위치 237 27.7 레이아웃 모디파이어 완성하기 237 27.8 커스텀 모디파이어 이용하기 239 27.9 정렬 선 다루기 239 27.10 베이스라인 다루기 242 27.11 정리 243 CHAPTER 28 커스텀 레이아웃 구현하기 244 28.1 커스텀 레이아웃 개요 244 28.2 커스텀 레이아웃 구문 244 28.3 커스텀 레이아웃 이용하기 246 28.4 CustomLayout 프로젝트 만들기 246 28.5 CascadeLayout 컴포저블 만들기 247 28.6 CascadeLayout 컴포저블 이용하기 249 28.7 정리 250 CHAPTER 29 ConstraintLayout 251 29.1 ConstraintLayout 소개 251 29.2 ConstraintLayout 동작 원리 251 29.3 크기 설정하기 255 29.4 가이드라인 헬퍼 256 29.5 배리어 헬퍼 256 29.6 정리 258 CHAPTER 30 ConstraintLayout 다루기 259 30.1 ConstraintLayout 호출하기 259 30.2 참조 만들기 259 30.3 참조를 컴포저블에 할당하기 260 30.4 제약 추가하기 260 30.5 ConstraintLayout 프로젝트 만들기 261 30.6 ConstraintLayout 라이브러리 추가하기 262 30.7 커스텀 버튼 컴포저블 추가하기 262 30.8 기본 제약 263 30.9 반대 제약 264 30.10 제약 편향 266 30.11 제약 마진 267 30.12 반대 제약과 편향의 중요성 268 30.13 체인 만들기 271 30.14 가이드라인 이용하기 272 30.15 배리어 이용하기 273 30.16 제약 집합을 이용해 제약 연결 끊기 277 30.17 정리 279 CHAPTER 31 IntrinsicSize 다루기 280 31.1 내재적 측정값 280 31.2 내재적 최대 및 최소 크기 측정값 281 31.3 예시 프로젝트 개요 282 31.4 IntrinsicSizeDemo 프로젝트 만들기 282 31.5 커스텀 텍스트 필드 만들기 282 31.6 Text, Box 컴포넌트 추가하기 283 31.7 최상위 Column 추가하기 284 31.8 프로젝트 테스트하기 285 31.9 IntrinsicSize Max 측정값 적용하기 285 31.10 IntrinsicSize Min 측정값 적용하기 286 31.11 정리 286 CHAPTER 32 코루틴과 LaunchedEffect 287 32.1 코루틴이란? 287 32.2 스레드와 코루틴 288 32.3 코루틴 스코프 288 32.4 일시 중단 함수 289 32.5 코루틴 디스패처 289 32.6 코루틴 빌더 290 32.7 잡 291 32.8 코루틴: 중지 및 재시작 291 32.9 코루틴 채널 커뮤니케이션 293 32.10 부작용 이해하기 293 32.11 정리 295 CHAPTER 33 리스트와 그리드 296 33.1 표준 리스트와 지연 리스트 296 33.2 Column Row 리스트 다루기 297 33.3 지연 리스트 만들기 297 33.4 ScrollState를 이용해 스크롤 활성화하기 298 33.5 프로그래밍적 스크롤 299 33.6 스티키 헤더 301 33.7 스크롤 위치에 반응하기 303 33.8 지연 그리드 만들기 303 33.9 정리 306 CHAPTER 34 컴포즈 Row/Column 리스트 튜토리얼 307 34.1 ListDemo 프로젝트 만들기 307 34.2 Column 기반 리스트 만들기 307 34.3 리스트 스크롤 활성화하기 309 34.4 수동 스크롤 310 34.5 Row 리스트 예시 312 34.6 정리 313 CHAPTER 35 지연 리스트 튜토리얼 314 35.1 LazyListDemo 프로젝트 만들기 314 35.2 프로젝트에 리스트 데이터 추가하기 315 35.3 XML 데이터 읽기 316 35.4 이미지 로딩 처리하기 317 35.5 리스트 아이템 컴포저블 디자인하기 320 35.6 지연 리스트 만들기 321 35.7 프로젝트 테스트하기 322 35.8 리스트 아이템 클릭하기 322 35.9 정리 324 CHAPTER 36 지연 리스트가 제공하는 스티키 헤더와 스크롤 식별 325 36.1 리스트 아이템 데이터 그룹핑하기 325 36.2 헤더와 아이템 표시하기 325 36.3 스티키 헤더 추가하기 326 36.4 스크롤 위치에 반응하기 328 36.5 스크롤 버튼 추가하기 329 36.6 완성한 앱 테스트하기 331 36.7 정리 331 CHAPTER 37 시각적 애니메이션 332 37.1 AnimateVisibility 프로젝트 만들기 332 37.2 시각적 애니메이션 적용하기 333 37.3 진입/이탈 애니메이션 정의하기 336 37.4 애니메이션 스펙과 애니메이션 이징 337 37.5 애니메이션 반복하기 339 37.6 자식별로 각각 애니메이션 적용하기 339 37.7 애니메이션 자동 시작하기 341 37.8 교차 페이딩 구현하기 342 37.9 정리 343 CHAPTER 38 상태 주도 애니메이션 344 38.1 상태 주도 애니메이션 이해하기 344 38.2 상태 함수로서의 애니메이션 344 38.3 AnimateState 프로젝트 만들기 345 38.4 animateFloatAsState를 이용한 회전 애니메이션 346 38.5 animateColorAsState를 이용한 색상 변경 애니메이션 처리 349 38.6 animateDpAsState를 이용한 움직임 애니메이션 처리하기 352 38.7 스프링 효과 추가하기 354 38.8 키프레임 다루기 356 38.9 여러 애니메이션 조합하기 357 38.10 Animation Inspector 이용하기 359 38.11 정리 361 CHAPTER 39 캔버스 그래픽 그리기 362 39.1 Canvas 컴포넌트 소개 362 39.2 CanvasDemo 프로젝트 만들기 362 39.3 선 그리기와 캔버스 크기 얻기 363 39.4 점선 그리기 364 39.5 사각형 그리기 365 39.6 회전시키기 369 39.7 원과 타원 그리기 370 39.8 그레이디언트 그리기 371 39.9 부채꼴 그리기 374 39.10 경로 그리기 375 39.11 점 그리기 376 39.12 이미지 그리기 378 39.13 정리 380 CHAPTER 40 ViewModel 다루기 381 40.1 안드로이드 젯팩이란 무엇인가? 381 40.2 ‘구식’ 아키텍처 381 40.3 모던 안드로이드 아키텍처 382 40.4 ViewModel 컴포넌트 382 40.5 상태 기반의 ViewModel 구현 383 40.6 ViewModel 상태와 액티비티 연결하기 384 40.7 LiveData를 이용한 ViewModel 구현 385 40.8 액티비티 안에서 ViewModel의 LiveData 관찰하기 386 40.9 정리 387 CHAPTER 41 ViewModel 튜토리얼 388 41.1 프로젝트 개요 388 41.2 ViewModelDemo 프로젝트 만들기 389 41.3 ViewModel 추가하기 389 41.4 MainActivity에서 DemoViewModel에 접근하기 391 41.5 온도 입력 컴포저블 디자인하기 392 41.6 온도 입력 컴포저블 구현하기 393 41.7 사용자 인터페이스 디자인 완료하기 396 41.8 앱 테스트하기 398 41.9 정리 398 CHAPTER 42 안드로이드 SQLite 데이터베이스 개요 399 42.1 데이터베이스 테이블 이해하기 399 42.2 데이터베이스 스키마 소개 400 42.3 열과 데이터 타입 400 42.4 데이터베이스의 행 400 42.5 기본 키 400 42.6 SQLite 401 42.7 구조화된 쿼리 언어(SQL) 401 42.8 AVD에서 SQLite 이용하기 402 42.9 안드로이드 Room 퍼시스턴스 라이브러리 405 42.10 정리 405 CHAPTER 43 Room 데이터베이스와 컴포즈 406 43.1 모던 앱 아키텍처 다시보기 406 43.2 Room 데이터베이스 퍼시스턴스의 핵심 요소 407 43.3 엔티티 이해하기 408 43.4 데이터 접근 객체 411 43.5 Room 데이터베이스 413 43.6 저장소 414 43.7 인메모리 데이터베이스 415 43.8 Database Inspector 416 43.9 정리 416 CHAPTER 44 Room 데이터베이스 및 저장소 튜토리얼 417 44.1 RoomDemo 프로젝트 개요 417 44.2 RoomDemo 프로젝트 만들기 418 44.3 빌드 환경 설정 수정하기 418 44.4 엔티티 구축하기 419 44.5 데이터 접근 객체 만들기 420 44.6 Room 데이터베이스 추가하기 422 44.7 저장소 추가하기 423 44.8 ViewModel 추가하기 425 44.9 사용자 인터페이스 디자인하기 427 44.10 ViewModelProvider Factory 클래스 작성하기 429 44.11 MainScreen 함수 완료하기 431 44.12 RoomDemo 앱 테스트하기 434 44.13 Database Inspector 이용하기 434 44.14 정리 435 CHAPTER 45 내비게이션 436 45.1 내비게이션 이해하기 436 45.2 내비게이션 컨트롤러 선언하기 438 45.3 내비게이션 호스트 선언하기 439 45.4 내비게이션 그래프에 목적지 추가하기 439 45.5 목적지로 이동하기 441 45.6 목적지에 인수 전달하기 442 45.7 하단 내비게이션 바 다루기 444 45.8 정리 446 CHAPTER 46 컴포즈 내비게이션 튜토리얼 447 46.1 NavigationDemo 프로젝트 만들기 447 46.2 NavigationDemo 프로젝트 소개 448 46.3 내비게이션 경로 선언하기 448 46.4 홈 화면 추가하기 448 46.5 웰컴 화면 추가하기 450 46.6 프로필 화면 추가하기 451 46.7 내비게이션 컨트롤러와 호스트 만들기 451 46.8 화면 내비게이션 구현하기 452 46.9 사용자 이름 인수 전달하기 453 46.10 프로젝트 테스트하기 454 46.11 정리 455 CHAPTER 47 하단 내비게이션 바 튜토리얼 456 47.1 BottomBarDemo 프로젝트 만들기 456 47.2 내비게이션 경로 추가하기 457 47.3 바 아이템 디자인하기 457 47.4 바 아이템 리스트 만들기 457 47.5 목적지 화면 추가하기 458 47.6 내비게이션 컨트롤러와 호스트 만들기 460 47.7 내비게이션 바 디자인하기 461 47.8 Scaffold 컴포넌트 다루기 463 47.9 프로젝트 테스트하기 463 47.10 정리 464 CHAPTER 48 제스처 감지하기 465 48.1 컴포즈 제스처 식별 465 48.2 GestureDemo 프로젝트 만들기 465 48.3 클릭 제스처 감지하기 466 48.4 PointerInputScope를 이용해 탭 감지하기 467 48.5 드래그 제스처 감지하기 469 48.6 PointerInputScope를 이용해 드래그 제스처 감지하기 471 48.7 scrollable 모디파이어를 이용해 스크롤하기 472 48.8 스크롤 모디파이어를 이용해 스크롤하기 473 48.9 꼬집기(확대/축소) 제스처 감지하기 475 48.10 회전 제스처 감지하기 477 48.11 변환 제스처 감지하기 478 48.12 정리 479 CHAPTER 49 스와이프 제스처 감지하기 480 49.1 스와이프 제스처와 앵커 480 49.2 스와이프 제스처 감지하기 480 49.3 앵커 맵 선언하기 481 49.4 임계점 선언하기 482 49.5 스와이프를 따라 컴포넌트 이동하기 482 49.6 SwipeDemo 프로젝트 소개 483 49.7 SwipeDemo 프로젝트 만들기 483 49.8 swipeable 상태 및 앵커 설정하기 483 49.9 부모 박스 디자인하기 484 49.10 프로젝트 테스트하기 487 49.11 정리 487 CHAPTER 50 코틀린 플로 488 50.1 플로 이해하기 488 50.2 FlowDemo 프로젝트 만들기 489 50.3 프로젝트에 뷰 모델 추가하기 490 50.4 플로 선언하기 490 50.5 플로 데이터 방출하기 491 50.6 데이터를 상태로 수집하기 492 50.7 중재자를 사용해 데이터 변환하기 493 50.8 플로 데이터 수집하기 495 50.9 플로 버퍼 추가하기 497 50.10 종단 플로 연산자 498 50.11 플로 평탄화 499 50.12 여러 플로 조합하기 501 50.13 핫/콜드 플로 502 50.14 스테이트플로 503 50.15 셰어드플로 504 50.16 콜드 플로를 핫 플로로 전환하기 506 50.17 정리 507 CHAPTER 51 젯팩 컴포즈 셰어드플로 튜토리얼 508 51.1 프로젝트 소개 508 51.2 SharedFlowDemo 프로젝트 만들기 508 51.3 프로젝트에 뷰 모델 추가하기 509 51.4 세어드플로 선언하기 510 51.5 플로값 수집하기 511 51.6 SharedFlowDemo 앱 테스트하기 512 51.7 백그라운드에서 플로 다루기 513 51.8 정리 515 CHAPTER 52 컴포즈 테마 적용 다루기 516 52.1 머티리얼 디자인 2와 머티리얼 디자인 3 516 52.2 머티리얼 디자인 2 테마 적용 517 52.3 머티리얼 디자인 3 테마 적용 520 52.4 커스텀 테마 구현하기 522 52.5 정리 523 CHAPTER 53 머티리얼 디자인 3 테마 적용 튜토리얼 524 53.1 ThemeDemo 프로젝트 만들기 524 53.2 머티리얼 디자인 3 라이브러리 추가하기 524 53.3 사용자 인터페이스 디자인하기 525 53.4 새로운 테마 만들기 527 53.5 프로젝트에 테마 추가하기 528 53.6 동적 색상 활성화하기 529 53.7 정리 530 CHAPTER 54 안드로이드 앱 번들 생성, 테스트, 업로드 531 54.1 릴리스 준비 프로세스 531 54.2 안드로이드 앱 번들 531 54.3 구글 플레이 개발자 콘솔 계정 등록하기 532 54.4 콘솔에서 앱 설정하기 533 54.5 구글 플레이 앱 서명 활성화하기 534 54.6 키스토어 파일 만들기 535 54.7 안드로이드 앱 번들 만들기 537 54.8 테스트 APK 파일 만들기 538 54.9 구글 플레이 개발자 콘솔에 앱 번들 업로드하기 540 54.10 앱 번들 살펴보기 541 54.11 테스터 관리하기 543 54.12 테스트용 앱 배포하기 543 54.13 새 앱 번들 버전 업로드하기 544 54.14 앱 번들 파일 분석하기 545 54.15 정리 546 CHAPTER 55 안드로이드 스튜디오의 그레이들 개요 547 55.1 그레이들 개요 547 55.2 그레이들과 안드로이드 스튜디오 548 55.2.1 합리적인 기본값 548 / 55.2.2 디펜던시 548 55.2.3 빌드 변형 548 / 55.2.4 매니페스트 항목 549 55.2.5 APK 서명 549 / 55.2.6 프로가드 지원 549 55.3 속성 및 설정 그레이들 빌드 파일 549 55.4 최상위 수준 그레이들 빌드 파일 550 55.5 모듈 수준 그레이들 빌드 파일 551 55.6 빌드 파일에서 서명 설정하기 554 55.7 커맨드라인에서 그레이들 태스크 실행하기 555 55.8 정리 556 찾아보기 558 |
Neil Smyth
닐 스미스의 다른 상품
김모세의 다른 상품
코틀린과 자바는 상호 운용성 수준이 매우 높기 때문에, 기존의 자바 코드를 코틀린으로 변환할 필요는 없다. 두 언어는 동일 프로젝트 안에서 쉽게 공존할 수 있다. 즉, 자바 코드는 내장된 자바/코틀린 컨버터(Java to Kotlin converter)를 이용해 안드로이드 스튜디오 안에서 코틀린으로 변환할 수 있다. 전체 자바 소스 파일을 안드로이드 스튜디오 코드 편집기에 로드한 뒤 Code → Convert Java File to Kotlin File 메뉴 옵션을 선택하면 자바 코드를 코틀린 코드로 변환할 수 있다.
--- p.93 컴포즈는 앱을 더 쉽고 빠르게 개발하게 하고, 소프트웨어 프로젝트를 개발할 때 일반적으로 나타나는 버그에 취약하지 않도록 하는 것을 목표로 한다. 이런 요소들은 안드로이드 스튜디오의 특별한 추가 요소인 컴포즈와 결합되었으며, 개발 과정에서 앱의 대화형 미리 보기를 이용해 거의 실시간으로 컴포즈 프로젝트를 테스트할 수 있다. --- p.154 젯팩은 과거 안드로이드 스튜디오 레이아웃 편집기에서 제공하던 방식과 전혀 다른 앱 개발 접근 방식을 도입했다. 컴포즈를 이용하면 사용자 인터페이스가 렌더링되는 방식을 직접 구현하지 않는다. 사용자 인터페이스를 설명적인 용어로 선언하면, 앱이 실행될 때 가장 좋은 렌더링 방법을 결정하는 작업을 수행한다. --- p.156 컴포즈를 이용해 개발할 때는 컴포저블 함수의 계층을 생성해 앱을 구축한다. 앞에서 설명했듯이 컴포저블 함수는 데이터를 받고, 해당 데이터를 이용해 사용자 인터페이스 레이아웃 영역을 만든다고 간주할 수 있다. 컴포즈 런타임은 이 요소들을 렌더링한다. 한 컴포저블 함수에서 다른 함수로 전달된 데이터는 대부분 부모 함수에서 상태로서 선언된다. 이는 부모 컴포저블의 상탯값 변화가 모든 자식 컴포저블에 반영되며, 해당 상태가 전달된다는 것을 의미한다. 컴포즈에서는 이를 재구성(recomposition)이라는 동작으로 실행한다. --- p.163 |
쉽게 따라 할 수 있도록 자세히 설명한 국내 최초 젯팩 컴포즈 전문서
이 책은 구글의 모든 운영체제 플랫폼용 앱 개발에 관한 완전히 새로운 접근 방식인 젯팩 컴포즈의 국내 최초 전문서다. 코틀린 언어 자체에 대한 깊은 이해와 함께, 데이터 핸들링, 속성, 사용자 인터페이스 디자인, 데이터 베이스 연동, 샘플 앱의 개발과 구글 플레이 콘솔을 통한 배포까지 앱 개발의 전체 과정을 다루면서 젯팩이 주는 이점을 충분히 느껴볼 수 있을 것이며, 이 책을 통해 여러분의 안드로이드 개발 효율을 한층 높이기를 기대한다. ■ 젯팩 컴포즈, 안드로이드 스튜디오, 코틀린 프로그래밍 언어를 활용해 안드로이드 애플리케이션을 구축한다. ■ 젯팩 컴포즈 및 안드로이드 아키텍처의 핵심 개념을 이해하고, 컴포즈 개발 모드에서 다양한 컴포저블을 활용해 사용자 인터페이스 레이아웃을 구현한다. ■ 뷰 모델, SQLite 데이터베이스, Room 데이터베이스 접근, 데이터베이스 인스펙터, 라이브 데이터, 커스텀 테마 생성을 다룬다. ■ 상태 프로퍼티를 활용한 데이터 처리와 함께 모디파이어, 내비게이션 바, 사용자 인터페이스 내비게이션 등 핵심적인 사용자 인터페이스 설계 개념을 살펴보고 재사용할 수 있는 커스텀 레이아웃 컴포넌트를 구현한다. ■ 그래픽 다루기, 사용자 인터페이스 애니메이션, 제스처 핸들링을 살펴본다. ■ 데이터 타입, 연산자, 제어 흐름, 함수, 람다, 객체 지향 프로그래밍을 포함해 코틀린 프로그래밍 언어에 대하여 자세히 설명한다. ■ 구현한 앱을 패키징하고 구글 플레이 스토어에 업로드해서 배포하는 과정을 살펴본다. |