CHAPTER 1 개요
1.1 소스 코드 다운로드하기
1.2 단축키와 코드 표기
1.3 독자 A/S
1.4 오탈자
CHAPTER 2 안드로이드 스튜디오 개발 환경 구성하기
2.1 개발 시스템 요구 사항
2.2 안드로이드 스튜디오 패키지 다운로드하기
2.3 안드로이드 스튜디오 설치하기
2.4 안드로이드 스튜디오 웰컴 스크린
2.5 안드로이드 SDK 패키지 설치하기
2.6 명령행에서 안드로이드 SDK 도구 사용하기
2.7 안드로이드 스튜디오 메모리 관리
2.8 안드로이드 스튜디오와 SDK 버전 업데이트하기
2.9 자동 import 설정하기
2.10 요약
CHAPTER 3 안드로이드 스튜디오로 예제 앱 만들기
3.1 프로젝트 개요
3.2 새로운 안드로이드 프로젝트 생성하기
3.3 액티비티 생성하기
3.4 프로젝트 구성하기
3.5 예제 앱 변경하기
3.6 UI 변경하기
3.7 레이아웃과 리소스 파일 살펴보기
3.8 코틀린 확장 플러그인 추가하기
3.9 버튼의 이벤트 처리하기
3.10 요약
CHAPTER 4 안드로이드 스튜디오에서 AVD 생성하기
4.1 AVD 개요
4.2 새로운 AVD 생성하기
4.3 에뮬레이터 시작시키기
4.4 AVD에서 앱 실행하기
4.5 여러 장치에서 앱 실행하기
4.6 실행 중인 앱 중단하기
4.7 어두운 테마 지원
4.8 도구 창에서 에뮬레이터 실행하기
4.9 AVD 구성 파일
4.10 요약
CHAPTER 5 안드로이드 스튜디오 AVD 에뮬레이터 사용 및 구성하기
5.1 에뮬레이터 환경
5.2 에뮬레이터 툴바
5.3 줌 모드 사용하기
5.4 에뮬레이터 창의 크기 조정
5.5 확장 제어 옵션
5.6 스냅샷 사용하기
5.7 모의 지문 구성하기
5.8 도구 창 모드의 에뮬레이터
5.9 요약
CHAPTER 6 안드로이드 스튜디오 UI 둘러보기
6.1 웰컴 스크린
6.2 메인 창
6.3 도구 창
6.4 안드로이드 스튜디오의 단축키
6.5 스위처와 최근 파일 기능을 이용한 내비게이션
6.6 안드로이드 스튜디오 테마 변경하기
6.7 요약
CHAPTER 7 실제 안드로이드 장치에서 앱 테스트하기
7.1 ADB 개요
7.2 안드로이드 장치에서 ADB 활성화하기
7.2.1 맥OS에서 ADB 구성하기
7.2.2 윈도우에서 ADB 구성하기
7.2.3 리눅스에서 ADB 구성하기
7.3 adb 연결 테스트하기
7.4 요약
CHAPTER 8 안드로이드 스튜디오 코드 편집기
8.1 안드로이드 스튜디오 코드 편집기
8.2 편집기 창 분할하기
8.3 코드 자동 완성
8.4 문장 자동 완성
8.5 매개변수 정보
8.6 매개변수 이름 힌트
8.7 코드 자동 생성
8.8 코드 접어 감추기
8.9 빠른 문서 검색
8.10 소스 코드 형식 변경
8.11 라이브 템플릿
8.12 요약
CHAPTER 9 안드로이드 아키텍처 개요
9.1 안드로이드 소프트웨어 스택
9.2 리눅스 커널
9.3 안드로이드 런타임 ― ART
9.4 안드로이드 라이브러리
9.4.1 C/C++ 라이브러리
9.5 앱 프레임워크
9.6 앱
9.7 요약
CHAPTER 10 안드로이드 앱의 핵심 요소
10.1 안드로이드 액티비티
10.2 안드로이드 프래그먼트
10.3 안드로이드 인텐트
10.4 브로드캐스트 인텐트
10.5 브로드캐스트 수신자
10.6 안드로이드 서비스
10.7 콘텐트 제공자
10.8 앱 매니페스트
10.9 앱 리소스
10.10 앱 컨텍스트
10.11 요약
CHAPTER 11 코틀린 개요
11.1 코틀린이란?
11.2 코틀린과 자바
11.3 자바 코드를 코틀린 코드로 변환하기
11.4 코틀린과 안드로이드 스튜디오
11.5 코틀린 코드 테스트하기
11.6 코틀린과 세미콜론
11.7 요약
CHAPTER 12 코틀린 데이터 타입, 변수, Null 처리
12.1 코틀린 데이터 타입
12.2 가변 변수
12.3 불변 변수
12.4 가변 변수와 불변 변수 선언하기
12.5 데이터 타입은 객체다
12.6 타입 애노테이션과 타입 추론
12.7 null 가능 타입
12.8 안전 호출 연산자
12.9 Not-null 어서션
12.10 Null 가능 타입과 let 함수
12.11 늦초기화(lateinit)
12.12 엘비스 연산자
12.13 타입 변환과 타입 검사
12.14 요약
CHAPTER 13 코틀린 연산자와 표현식
13.1 코틀린의 표현식 문법
13.2 기본적인 대입 연산자
13.3 코틀린 산술 연산자
13.4 복합 대입 연산자
13.5 증가와 감소 연산자
13.6 동등 연산자
13.7 논리 연산자
13.8 범위 연산자
13.9 비트 연산자
13.10 요약
CHAPTER 14 코틀린 흐름 제어
14.1 루프 흐름 제어
14.2 조건 흐름 제어
14.3 요약
CHAPTER 15 코틀린 함수와 람다 개요
15.1 함수란?
15.2 코틀린 함수 선언하기
15.3 코틀린 함수 호출하기
15.4 단일 표현식 함수
15.5 지역 함수
15.6 지명 인자
15.7 매개변수 기본값 선언하기
15.8 가변 인자
15.9 람다식
15.10 고차 함수
15.11 요약
CHAPTER 16 코틀린 객체지향 프로그래밍
16.1 객체란?
16.2 클래스란?
16.3 코틀린 클래스 정의하기
16.4 클래스에 속성 추가하기
16.5 함수 정의하기
16.6 클래스 인스턴스 생성하고 초기화하기
16.7 기본과 보조 생성자
16.8 초기화 블록
16.9 함수 호출과 속성 사용하기
16.10 커스텀 접근자
16.11 중첩 클래스와 내부 클래스
16.12 동반 객체
16.13 요약
CHAPTER 17 상속과 서브 클래스
17.1 상속과 서브 클래스 개요
17.2 서브 클래스 생성하기
17.3 상속 구현 예
17.4 서브 클래스의 기능 확장하기
17.5 상속받은 함수 오버라이딩하기
17.6 커스텀 보조 생성자 추가하기
17.7 SavingsAccount 클래스 사용하기
17.8 요약
CHAPTER 18 안드로이드 뷰 바인딩 개요
18.1 findViewById() 함수와 합성 속성
18.2 뷰 바인딩
18.3 AndroidSample 프로젝트 변환하기
18.4 뷰 바인딩 활성화하기
18.5 뷰 바인딩 사용하기
18.6 방법 선택하기
18.7 예제 프로젝트의 뷰 바인딩
18.8 프로젝트에서 뷰 바인딩을 사용하도록 변경하기
18.9 요약
CHAPTER 19 안드로이드 앱과 액티비티 생명주기
19.1 안드로이드 앱과 리소스 관리
19.2 안드로이드 프로세스 상태
19.3 액티비티 생명주기
19.4 액티비티 스택
19.5 액티비티 상태
19.6 구성 변경
19.7 상태 변경 처리하기
19.8 요약
CHAPTER 20 액티비티 상태 변경 처리하기
20.1 최신과 종전의 생명주기 기법
20.2 Activity와 Fragment 클래스
20.3 동적 상태 vs. 영속적 상태
20.4 안드로이드 생명주기 함수
20.5 액티비티/프래그먼트 생애
20.6 폴더블 장치와 다중 실행 재개 상태
20.7 액티비티가 다시 시작되지 않게 하기
20.8 생명주기 함수의 제약
20.9 요약
CHAPTER 21 액티비티 상태 변화 예제
21.1 상태 변화 예제 프로젝트 생성하기
21.2 사용자 인터페이스 디자인하기
21.3 액티비티 생명주기 함수 오버라이딩
21.4 로그캣 패널의 메시지 필터링하기
21.5 앱 실행하기
21.6 액티비티로 실험하기
21.7 요약
CHAPTER 22 액티비티 상태를 저장하고 복원하기
22.1 동적 상태 저장
22.2 사용자 인터페이스 상태의 자동 저장과 복원
22.3 Bundle 클래스
22.4 상태 데이터 저장하기
22.5 상태 데이터 복원하기
22.6 앱 테스트하기
22.7 요약
CHAPTER 23 안드로이드 뷰, 뷰 그룹, 레이아웃
23.1 서로 다른 안드로이드 장치를 위한 디자인
23.2 뷰와 뷰 그룹
23.3 안드로이드 레이아웃 매니저
23.4 뷰 계층 구조
23.5 사용자 인터페이스 생성
23.6 요약
CHAPTER 24 안드로이드 스튜디오 레이아웃 편집기 살펴보기
24.1 Basic vs. Empty 액티비티 템플릿
24.2 안드로이드 스튜디오 레이아웃 편집기
24.3 디자인 모드
24.4 팔레트
24.5 디자인 모드와 레이아웃 뷰
24.6 코드 모드
24.7 분할 모드
24.8 속성 설정하기
24.9 변형
24.10 Tools 속성 설정하기
24.11 뷰 변환하기
24.12 샘플 데이터 보여 주기
24.13 커스텀 장치 정의 생성하기
24.14 현재 장치 변경하기
24.15 레이아웃 확인(다중 레이아웃 미리보기)
24.16 요약
CHAPTER 25 안드로이드 ConstraintLayout 개요
25.1 ConstraintLayout의 핵심 개념
25.2 기준선 정렬
25.3 위젯 크기 구성하기
25.4 지시선
25.5 그룹
25.6 베리어
25.7 플로우
25.8 비율
25.9 ConstraintLayout의 장점
25.10 ConstraintLayout 가용성
25.11 요약
CHAPTER 26 안드로이드 스튜디오에서 ConstraintLayout 사용하기
26.1 디자인 뷰와 레이아웃 뷰
26.2 자동-연결
26.3 제약 추론
26.4 수동 연결
26.5 속성 창에서 제약 추가하기
26.6 속성 창에서 제약 보기
26.7 제약 삭제하기
26.8 제약 바이어스 조정하기
26.9 ConstraintLayout 마진 이해하기
26.10 상대 제약과 바이어스의 중요성
26.11 위젯의 크기 구성하기
26.12 디자인 시점의 Tools 속성 적용/미적용 전환하기
26.13 지시선 추가하기
26.14 베리어 추가하기
26.15 그룹 추가하기
26.16 플로우 사용하기
26.17 위젯의 그룹 정렬
26.18 다른 레이아웃을 ConstraintLayout으로 변환하기
26.19 요약
CHAPTER 27 안드로이드 스튜디오에서 ConstraintLayout 체인과 비율 사용하기
27.1 체인 생성하기
27.2 체인 스타일 변경하기
27.3 Spread inside 체인 스타일
27.4 Packed 체인 스타일
27.5 바이어스를 사용한 Packed 체인 스타일
27.6 Weighted 체인
27.7 비율 사용하기
27.8 요약
CHAPTER 28 ConstraintLayout 예제 프로젝트
28.1 ConstraintLayout 예제 프로젝트 생성하기
28.2 새로운 액티비티 생성하기
28.3 자동-연결 설정과 이미지 파일 추가하기
28.4 사용자 인터페이스에 위젯 추가하기
28.5 제약 추가하기
28.6 레이아웃 테스트하기
28.7 레이아웃 탐색기 사용하기
28.8 요약
CHAPTER 29 XML 레이아웃 직접 작성하기
29.1 XML 레이아웃 직접 생성하기
29.2 XML 직접 작성 vs. 레이아웃 편집기의 디자인 뷰 사용
29.3 요약
CHAPTER 30 ConstraintSet으로 ConstraintLayout 사용하기
30.1 코틀린 코드 vs. XML 레이아웃 파일
30.2 뷰 생성하기
30.3 뷰 속성
30.4 ConstraintSet
30.5 요약
CHAPTER 31 안드로이드 ConstraintSet 예제 프로젝트
31.1 안드로이드 스튜디오로 예제 프로젝트 생성하기
31.2 액티비티에 뷰 추가하기
31.3 뷰 속성 설정하기
31.4 뷰 id 생성하고 사용하기
31.5 제약 설정 구성하기
31.6 EditText 뷰 추가하기
31.7 dp를 px로 변환하기
31.8 요약
CHAPTER 32 안드로이드 스튜디오의 ‘변경 적용’ 기능 사용하기
32.1 변경 적용 기능 개요
32.2 변경 적용 옵션
32.3 ‘변경 적용’ 기능 사용하기
32.4 변경 적용 설정하기
32.5 변경 적용 기능 연습 프로젝트 생성하기
32.6 ‘코드 변경 적용’ 기능 사용하기
32.7 ‘변경 적용과 액티비티 재시작’ 기능 사용하기
32.8 요약
CHAPTER 33 안드로이드 이벤트 처리 개요
33.1 안드로이드 이벤트 이해하기
33.2 android:onClick 리소스 사용하기
33.3 이벤트 리스너와 콜백 함수
33.4 이벤트 처리 예제
33.5 사용자 인터페이스 디자인하기
33.6 이벤트 리스너와 콜백 함수
33.7 이벤트 소비하기
33.8 요약
CHAPTER 34 터치와 다중 터치 이벤트 처리하기
34.1 터치 이벤트 처리하기
34.2 MotionEvent 객체
34.3 터치 액션 이해하기
34.4 다중 터치 처리하기
34.5 다중 터치 앱 생성하기
34.6 액티비티 사용자 인터페이스 디자인하기
34.7 터치 이벤트 리스너 구현하기
34.8 앱 실행하기
34.9 요약
CHAPTER 35 안드로이드 제스처 감지 클래스로 일반 제스처 처리하기
35.1 일반 제스처 감지와 처리하기
35.2 제스처 처리 프로젝트 생성하기
35.3 리스너 클래스 구현하기
35.4 GestureDetectorCompat 인스턴스 생성하기
35.5 onTouchEvent() 함수 구현하기
35.6 앱 테스트하기
35.7 요약
CHAPTER 36 커스텀 제스처와 핀치 인식 구현하기
36.1 안드로이드 제스처 빌더 앱
36.2 GestureOverlayView 클래스
36.3 제스처 감지하기
36.4 제스처 확인하기
36.5 제스처 빌더 앱의 설치와 실행
36.6 제스처 파일 생성하기
36.7 예제 프로젝트 생성하기
36.8 SD 카드 영역에서 제스처 파일 추출하기
36.9 제스처 파일을 프로젝트에 추가하기
36.10 사용자 인터페이스 디자인하기
36.11 제스처 파일 로드하기
36.12 이벤트 리스너 등록하기
36.13 onGesturePerformed 함수 구현하기
36.14 앱 테스트하기
36.15 GestureOverlayView 구성하기
36.16 제스처 가로채기
36.17 핀치 제스처 처리하기
36.18 핀치 제스처 예제 프로젝트
36.19 요약
CHAPTER 37 안드로이드 프래그먼트 개요
37.1 프래그먼트란?
37.2 프래그먼트 생성하기
37.3 레이아웃 XML 파일을 사용하여 액티비티에 프래그먼트 추가하기
37.4 코드에서 프래그먼트 추가하고 관리하기
37.5 프래그먼트 이벤트 처리하기
37.6 프래그먼트 간의 통신 구현하기
37.7 요약
CHAPTER 38 프래그먼트 사용 예제 프로젝트
38.1 예제 프래그먼트 앱 개요
38.2 예제 프로젝트 생성하기
38.3 첫 번째 프래그먼트 레이아웃 생성하기
38.4 뷰 바인딩을 사용하도록 프래그먼트 변경하기
38.5 두 번째 프래그먼트 추가하기
38.6 액티비티에 프래그먼트 추가하기
38.7 ToolbarFragment가 액티비티와 통신하게 만들기
38.8 액티비티에서 TextFragment로 통신하기
38.9 앱 테스트하기
38.10 요약
CHAPTER 39 최신 안드로이드 앱 아키텍처: Jetpack
39.1 안드로이드 Jetpack이란?
39.2 종전 아키텍처
39.3 최신 안드로이드 아키텍처
39.4 ViewModel 컴포넌트
39.5 LiveData 컴포넌트
39.6 ViewModel의 상태 저장
39.7 LiveData와 데이터 바인딩
39.8 안드로이드 생명주기
39.9 리포지터리 모듈
39.10 요약
CHAPTER 40 Jetpack ViewModel 예제 프로젝트
40.1 프로젝트 개요
40.2 ViewModel 예제 앱 생성하기
40.3 프로젝트 살펴보기
40.3.1 메인 액티비티
40.3.2 콘텐츠 프래그먼트
40.3.3 ViewModel
40.4 프래그먼트 레이아웃 디자인하기
40.5 ViewModel 구현하기
40.6 ViewModel에 프래그먼트 연결하기
40.7 프래그먼트 변경하기
40.8 ViewModel 데이터 사용하기
40.9 프로젝트 테스트하기
40.10 요약
CHAPTER 41 Jetpack LiveData 예제 프로젝트
41.1 LiveData 핵심 요약
41.2 ViewModel에 LiveData 추가하기
41.3 옵저버 구현하기
41.4 요약
CHAPTER 42 Jetpack 데이터 바인딩 개요
42.1 데이터 바인딩 개요
42.2 데이터 바인딩의 핵심 구성요소
42.3 요약
CHAPTER 43 Jetpack 데이터 바인딩 예제 프로젝트
43.1 중복 코드 제거하기
43.2 데이터 바인딩 활성화하기
43.3 레이아웃 요소 추가하기
43.4 레이아웃 파일에 데이터 요소 추가하기
43.5 바인딩 클래스 사용하기
43.6 데이터 바인딩 변수에 ViewModel 인스턴스 지정하기
43.7 바인딩 표현식 추가하기
43.8 환전 함수 추가하기
43.9 리스너 바인딩 추가하기
43.10 앱 테스트하기
43.11 요약
CHAPTER 44 ViewModel 상태 저장 예제 프로젝트
44.1 ViewModel 상태 저장 이해하기
44.2 ViewModel 상태 저장 구현하기
44.3 상태 저장 및 복원하기
44.4 ViewModelDemo 프로젝트에 상태 저장 지원 추가하기
44.5 요약
CHAPTER 45 안드로이드 생명주기-인식 컴포넌트 사용하기
45.1 생명주기-인식
45.2 생명주기 소유자
45.3 생명주기 옵저버
45.4 생명주기 상태와 이벤트
45.5 요약
CHAPTER 46 Jetpack 생명주기-인식 예제 프로젝트
46.1 생명주기 예제 프로젝트 생성하기
46.2 생명주기 옵저버 생성하기
46.3 옵저버 추가하기
46.4 옵저버 테스트하기
46.5 생명주기 소유자 생성하기
46.6 커스텀 생명주기 소유자 테스트하기
46.7 요약
CHAPTER 47 내비게이션 아키텍처 컴포넌트 개요
47.1 내비게이션 이해하기
47.2 내비게이션 호스트 선언하기
47.3 내비게이션 그래프
47.4 내비게이션 컨트롤러 사용하기
47.5 내비게이션 액션 실행하기
47.6 인자 전달
47.7 요약
CHAPTER 48 Jetpack 내비게이션 컴포넌트 예제 프로젝트
48.1 NavigationDemo 프로젝트 생성하기
48.2 빌드 구성에 내비게이션 라이브러리 추가하기
48.3 내비게이션 그래프 리소스 파일 생성하기
48.4 내비게이션 호스트 선언하기
48.5 내비게이션 목적지 추가하기
48.6 목적지 프래그먼트 레이아웃 디자인하기
48.7 내비게이션 그래프에 액션 추가하기
48.8 OnFragmentInteractionListener 구현하기
48.9 목적지 프래그먼트에 뷰 바인딩 지원 추가하기
48.10 액션 실행하기
48.11 Safeargs를 사용한 데이터 전달
48.12 요약
CHAPTER 49 MotionLayout 개요
49.1 MotionLayout이란?
49.2 MotionLayout 클래스
49.3 MotionScene
49.4 ConstraintSet 구성하기
49.5 커스텀 속성
49.6 애니메이션 시작하기
49.7 호 형태의 이동
49.8 키 프레임
49.9 애니메이션 속도 변경
49.10 KeyTrigger
49.11 사이클 키 프레임과 시간 사이클 키 프레임
49.12 코드에서 애니메이션 시작하기
49.13 요약
CHAPTER 50 MotionLayout 편집기 예제 프로젝트
50.1 MotionLayoutDemo 프로젝트 생성하기
50.2 ConstraintLayout을 MotionLayout으로 변환하기
50.3 시작과 끝 ConstraintSet 구성하기
50.4 MotionLayout 애니메이션 미리보기
50.5 OnClick 제스처 추가하기
50.6 속성 키 프레임 추가하기
50.7 CustomAttribute 추가하기
50.8 위치 키 프레임 추가하기
50.9 요약
CHAPTER 51 MotionLayout KeyCycle
51.1 사이클 키 프레임 개요
51.2 사이클 편집기 사용하기
51.3 KeyCycleDemo 프로젝트 생성하기
51.4 시작과 끝 ConstraintSet 구성하기
51.5 KeyCycle 생성하기
51.6 애니메이션 미리보기
51.7 MotionScene 파일에 KeyFrameSet 추가하기
51.8 요약
CHAPTER 52 플로팅 액션 버튼과 스낵바 사용하기
52.1 머티리얼 디자인
52.2 디자인 라이브러리
52.3 플로팅 액션 버튼(FAB)
52.4 스낵바
52.5 예제 프로젝트 생성하기
52.6 프로젝트 살펴보기
52.7 프래그먼트 간의 이동 코드 삭제하기
52.8 플로팅 액션 버튼 변경하기
52.9 스낵바에 액션 추가하기
52.10 요약
CHAPTER 53 탭 인터페이스 생성하기
53.1 ViewPager2 개요 475
53.2 TabLayout 컴포넌트 개요
53.3 TabLayoutDemo 프로젝트 생성하기
53.4 첫 번째 프래그먼트 생성하기
53.5 프래그먼트 복제하기
53.6 TabLayout과 ViewPager2 추가하기
53.7 FragmentStateAdapter 생성하기
53.8 초기화 작업하기
53.9 앱 테스트하기
53.10 TabLayout 커스터마이징
53.11 요약
CHAPTER 54 RecyclerView와 CardView 사용하기
54.1 RecyclerView 개요
54.2 CardView 개요
54.3 요약
CHAPTER 55 RecyclerView와 CardView 예제 프로젝트
55.1 CardDemo 프로젝트 생성하기
55.2 Basic Activity 프로젝트 변경하기
55.3 CardView 레이아웃 디자인하기
55.4 RecyclerView 추가하기
55.5 이미지 파일 추가하기
55.6 RecyclerView 어댑터 생성하기
55.7 RecyclerView 컴포넌트 초기화하기
55.8 앱 테스트하기
55.9 카드 선택에 응답하기
55.10 요약
CHAPTER 56 레이아웃 편집기에서 샘플 데이터 사용하기
56.1 프로젝트에 샘플 데이터 추가하기
56.2 커스텀 샘플 데이터 사용하기
56.3 요약
CHAPTER 57 앱 바와 컬랩싱 툴바 레이아웃 사용하기
57.1 AppBar 개요
57.2 예제 프로젝트
57.3 RecyclerView와 Toolbar 연동시키기
57.4 컬랩싱 툴바 레이아웃 개요
57.5 제목과 스크림 색상 변경하기
57.6 요약
CHAPTER 58 안드로이드 스튜디오 기본/상세 플로
58.1 기본/상세 플로 개요
58.2 기본/상세 플로 액티비티 생성하기
58.3 기본/상세 플로 템플릿 살펴보기
58.4 기본/상세 플로 템플릿 변경하기
58.5 콘텐츠 모델 변경하기
58.6 상세 패널 변경하기
58.7 WebsiteDetailFragment 클래스 변경하기
58.8 WebsiteListFragment 클래스 수정하기
58.9 매니페스트 퍼미션 추가하기
58.10 앱 실행하기
58.11 요약
CHAPTER 59 안드로이드 인텐트 개요
59.1 인텐트 개요
59.2 명시적 인텐트
59.3 액티비티에서 데이터 반환하기
59.4 암시적 인텐트
59.5 인텐트 필터 사용하기
59.6 인텐트 사용 가능 여부 확인하기
59.7 요약
CHAPTER 60 명시적 인텐트 예제 프로젝트
60.1 예제 프로젝트 생성하기
60.2 MainActivity의 사용자 인터페이스 디자인하기
60.3 두 번째 액티비티 클래스 생성하기
60.4 ActivityB의 사용자 인터페이스 레이아웃 디자인하기
60.5 앱의 매니페스트 파일 살펴보기
60.6 인텐트 생성하기
60.7 인텐트 데이터 추출하기
60.8 서브 액티비티로 ActivityB 시작시키기
60.9 서브 액티비티에서 데이터 반환하기
60.10 앱 테스트하기
60.11 요약
CHAPTER 61 암시적 인텐트 예제 프로젝트
61.1 암시적 인텐트 예제 프로젝트 생성하기
61.2 사용자 인터페이스 디자인하기
61.3 암시적 인텐트 생성하기
61.4 암시적 인텐트로 시작되는 액티비티 생성하기
61.5 사용자 인터페이스에 웹 뷰 추가하기
61.6 인텐트 URL 얻기
61.7 MyWebView 프로젝트의 매니페스트 파일 변경하기
61.8 장치에 MyWebView 패키지 설치하기
61.9 앱 테스트하기
61.10 요약
CHAPTER 62 브로드캐스트 인텐트와 브로드캐스트 수신자
62.1 브로드캐스트 인텐트 개요
62.2 브로드캐스트 수신자 개요
62.3 브로드캐스트 수신자로부터 결과 데이터 받기
62.4 스티키 브로드캐스트 인텐트
62.5 브로드캐스트 인텐트 예제 프로젝트
62.6 예제 앱 생성하기
62.7 브로드캐스트 인텐트를 생성하고 전송하기
62.8 브로드캐스트 수신자 생성하기
62.9 브로드캐스트 수신자 등록하기
62.10 브로드캐스트 앱 테스트하기
62.11 시스템 브로드캐스트 인텐트 리스닝하기
62.12 요약
CHAPTER 63 스레드와 AsyncTask
63.1 스레드 개요
63.2 앱의 메인 스레드
63.3 스레드 처리
63.4 기본적인 AsyncTask 예제 프로젝트
63.5 AsyncTask의 서브 클래스 생성하기
63.6 앱 테스트하기
63.7 작업 취소하기
63.8 요약
CHAPTER 64 코틀린 코루틴 개요
64.1 코루틴이란?
64.2 스레드 vs. 코루틴
64.3 코루틴 범위
64.4 정지 함수
64.5 코루틴 디스패처
64.6 코루틴 빌더
64.7 Job
64.8 코루틴의 정지와 실행 재개
64.9 코루틴에서 결과 받기
64.10 withContext 사용하기
64.11 코루틴 채널 통신
64.12 요약
CHAPTER 65 코틀린 코루틴 예제 프로젝트
65.1 코루틴 예제 앱 생성하기
65.2 코루틴 지원 라이브러리 추가하기
65.3 사용자 인터페이스 디자인하기
65.4 SeekBar 구현하기
65.5 정지 함수 추가하기
65.6 launchCoroutines 함수 구현하기
65.7 앱 테스트하기
65.8 요약
CHAPTER 66 스타트 서비스와 바운드 서비스 개요
66.1 스타트 서비스
66.2 인텐트 서비스
66.3 바운드 서비스
66.4 서비스 생명주기
66.5 소멸된 서비스 재시작 옵션 제어하기
66.6 매니페스트 파일에 서비스 선언하기
66.7 시스템 부팅 시 서비스 시작시키기
66.8 요약
CHAPTER 67 스타트 서비스 구현 예제 프로젝트
67.1 예제 프로젝트 생성하기
67.2 사용자 인터페이스 디자인하기
67.3 Service 클래스 생성하기
67.4 매니페스트 파일에 서비스 추가하기
67.5 서비스 시작시키기
67.6 JobIntentService 테스트하기
67.7 Service 클래스 사용하기
67.8 새로운 서비스 생성하기
67.9 서비스를 시작하도록 변경하기
67.10 앱 실행하기
67.11 서비스 작업에 코루틴 사용하기
67.12 요약
CHAPTER 68 로컬 바운드 서비스 예제 프로젝트
68.1 바운드 서비스 이해하기
68.2 바운드 서비스 상호작용 옵션
68.3 로컬 바운드 서비스 예제 프로젝트
68.4 프로젝트에 바운드 서비스 추가하기
68.5 Binder 구현하기
68.6 서비스에 클라이언트 바인딩하기
68.7 예제 프로젝트 마무리하기
68.8 앱 테스트하기
68.9 요약
CHAPTER 69 원격 바운드 서비스 예제 프로젝트
69.1 클라이언트에서 원격 서비스로 통신하기
69.2 예제 앱 생성하기
69.3 사용자 인터페이스 디자인하기
69.4 원격 바운드 서비스 구현하기
69.5 매니페스트 파일에 원격 서비스 구성하기
69.6 원격 서비스를 시작시키고 바인딩하기
69.7 원격 서비스에 메시지 전송하기
69.8 요약
CHAPTER 70 안드로이드 알림 개요
70.1 알림 개요
70.2 NotifyDemo 프로젝트 생성하기
70.3 사용자 인터페이스 디자인하기
70.4 두 번째 액티비티 생성하기
70.5 알림 채널 생성하기
70.6 기본 알림을 생성하고 전달하기
70.7 알림에서 액티비티 시작시키기
70.8 알림에 액션 추가하기
70.9 알림 메시지 묶기
70.10 요약
CHAPTER 71 안드로이드 직접 응답 알림 구현
71.1 DirectReply 프로젝트 생성하기
71.2 사용자 인터페이스 디자인하기
71.3 알림 채널 생성하기
71.4 RemoteInput 객체 생성하기
71.5 PendingIntent 객체 생성하기
71.6 응답 액션 생성하기
71.7 직접 응답 입력 데이터 수신하기
71.8 알림 변경하기
71.9 요약
CHAPTER 72 폴더블 장치와 다중 창 지원
72.1 폴더블과 다중 창 지원
72.2 폴더블 에뮬레이터 사용하기
72.3 다중 창 모드로 전환하기
72.4 다중 창 지원을 활성화하고 사용하기
72.5 자유형식 모드의 지원 여부 확인하기
72.6 다중 창 지원을 앱에서 활성화하기
72.7 다중 창 관련 속성 지정하기
72.8 액티비티에서 다중 창 모드인지 검사하기
72.9 다중 창 관련 통지받기
72.10 다중 창 모드에서 액티비티 시작시키기
72.11 자유형식 모드로 실행되는 액티비티의 크기와 위치 구성하기
72.12 요약
CHAPTER 73 안드로이드 SQLite 데이터베이스 개요
73.1 데이터베이스 테이블 이해하기
73.2 데이터베이스 스키마 개요
73.3 열과 데이터 타입
73.4 데이터베이스 행
73.5 기본 키 개요
73.6 SQLite란?
73.7 SQL
73.8 AVD에서 SQLite 사용해 보기
73.9 안드로이드 Room 퍼시스턴스 라이브러리
73.10 요약
CHAPTER 74 안드로이드 Room 퍼시스턴스 라이브러리
74.1 최신 앱 아키텍처 다시 보기
74.2 Room 데이터베이스 퍼시스턴스의 핵심 요소
74.3 엔터티 이해하기
74.4 DAO
74.5 Room 데이터베이스
74.6 리포지터리
74.7 인메모리 데이터베이스
74.8 데이터베이스 탐색기
74.9 요약
CHAPTER 75 TableLayout과 TableRow 개요
75.1 TableLayout과 TableRow
75.2 Room 데이터베이스 프로젝트 생성하기
75.3 LinearLayout으로 변환하기
75.4 사용자 인터페이스에 TableLayout 추가하기
75.5 TableRow 구성하기
75.6 레이아웃에 버튼 추가하기
75.7 RecyclerView 추가하기
75.8 레이아웃 마진 조정하기
75.9 요약
CHAPTER 76 Room 데이터베이스와 리포지터리 예제 프로젝트
76.1 예제 프로젝트 개요
76.2 빌드 구성 변경하기
76.3 엔터티 생성하기
76.4 DAO 생성하기
76.5 Room 데이터베이스 추가하기
76.6 리포지터리 추가하기
76.7 ViewModel 변경하기
76.8 제품 항목 레이아웃 생성하기
76.9 RecyclerView 어댑터 추가하기
76.10 MainFragment 변경하기
76.11 버튼 리스너 추가하기
76.12 LiveData 옵저버 추가하기
76.13 RecyclerView 초기화하기
76.14 RoomDemo 앱 테스트하기
76.15 데이터베이스 탐색기 사용하기
76.16 요약
CHAPTER 77 구글 클라우드 스토리지 액세스하기
77.1 스토리지 액세스 프레임워크
77.2 스토리지 액세스 프레임워크 사용하기
77.3 피커의 파일 내역 선별하기
77.4 인텐트 결과 처리하기
77.5 파일 내용 읽기
77.6 파일에 내용 쓰기
77.7 파일 삭제하기
77.8 파일의 지속적인 액세스 얻기
77.9 요약
CHAPTER 78 안드로이드 스토리지 액세스 프레임워크 예제 프로젝트
78.1 스토리지 액세스 프레임워크 예제 프로젝트 개요
78.2 스토리지 액세스 프레임워크 예제 프로젝트 생성
78.3 사용자 인터페이스 디자인하기
78.4 요청 코드 선언하기
78.5 새로운 스토리지 파일 생성하기
78.6 onActivityResult() 함수
78.7 스토리지 파일에 데이터 저장하기
78.8 스토리지 파일 열고 읽기
78.9 스토리지 액세스 앱 테스트하기
78.10 요약
CHAPTER 79 동영상 재생 구현하기
79.1 안드로이드 VideoView 클래스 개요
79.2 안드로이드 MediaController 클래스 개요
79.3 동영상 재생 예제 프로젝트 생성하기
79.4 VideoPlayer 앱의 레이아웃 디자인하기
79.5 동영상 파일 다운로드하기
79.6 VideoView 구성하기
79.7 VideoView에 MediaController 추가하기
79.8 onPreparedListener 설정하기
79.9 요약
CHAPTER 80 안드로이드 PiP 모드
80.1 PiP 모드의 기능
80.2 PiP 모드 활성화하기
80.3 PiP 매개변수 구성하기
80.4 PiP 모드 진입하기
80.5 PiP 모드 변경 감지하기
80.6 PiP 액션 추가하기
80.7 요약
CHAPTER 81 안드로이드 PiP 예제 프로젝트
81.1 PiP 지원 활성화하기
81.2 PiP 버튼 추가하기
81.3 PiP 모드 진입하기
81.4 PiP 모드 변경 감지하기
81.5 브로드캐스트 수신자 추가하기
81.6 PiP 액션 추가하기
81.7 PiP 액션 테스트하기
81.8 요약
CHAPTER 82 런타임 퍼미션 요청하기
82.1 보통 퍼미션과 위험 퍼미션 이해하기
82.2 퍼미션 예제 프로젝트 생성하기
82.3 퍼미션 확인하기
82.4 런타임 시에 퍼미션 요청하기
82.5 퍼미션 요청 이유 제공하기
82.6 퍼미션 앱 테스트하기
82.7 요약
CHAPTER 83 안드로이드 오디오 녹음 및 재생하기
83.1 오디오 재생하기
83.2 MediaRecorder 클래스를 사용해서 오디오 녹음하기
83.3 예제 프로젝트 개요
83.4 AudioApp 프로젝트 생성하기
83.5 사용자 인터페이스 디자인하기
83.6 마이크 확인하기
83.7 액티비티 초기화하기
83.8 recordAudio() 함수 구현하기
83.9 stopAudio() 함수 구현하기
83.10 playAudio() 함수 구현하기
83.11 매니페스트 파일에 퍼미션 구성하기
83.12 앱 테스트하기
83.13 요약
CHAPTER 84 안드로이드 인쇄 프레임워크 사용하기
84.1 안드로이드 인쇄 아키텍처
84.2 인쇄 서비스 플러그인
84.3 구글 클라우드 인쇄
84.4 구글 드라이브로 인쇄하기
84.5 PDF로 저장하기
84.6 안드로이드 장치에서 인쇄하기
84.7 안드로이드 앱에 포함되는 인쇄 지원 옵션
84.7.1 이미지 인쇄
84.7.2 HTML 콘텐츠 생성과 인쇄
84.7.3 기존 웹 페이지 인쇄하기
84.7.4 커스텀 문서 인쇄하기
84.8 요약
CHAPTER 85 HTML과 웹 콘텐츠 인쇄 예제 프로젝트
85.1 HTML 인쇄 예제 앱 생성하기
85.2 동적 HTML 콘텐츠 인쇄하기
85.3 기존 웹 페이지 인쇄 예제 앱 생성하기
85.4 플로팅 액션 버튼 삭제하기
85.5 프래그먼트 간의 이동 코드 삭제하기
85.6 사용자 인터페이스 레이아웃 디자인하기
85.7 메인 액티비티에서 WebView 사용하기
85.8 WebView에 웹 페이지 로드하기
85.9 인쇄 메뉴 옵션 추가하기
85.10 요약
CHAPTER 86 안드로이드 커스텀 문서 인쇄
86.1 안드로이드 커스텀 문서 인쇄 개요
86.1.1 커스텀 인쇄 어댑터
86.2 커스텀 문서 인쇄 프로젝트 준비하기
86.3 커스텀 인쇄 어댑터 생성하기
86.4 onLayout() 콜백 함수 구현하기
86.5 onWrite() 콜백 함수 구현하기
86.6 페이지가 인쇄 범위에 있는지 확인하기
86.7 페이지 캔버스에 콘텐츠 그리기
86.8 인쇄 작업 시작시키기
86.9 앱 테스트하기
86.10 요약
CHAPTER 87 안드로이드 앱 링크
87.1 안드로이드 앱 링크 개요
87.2 앱 링크 인텐트 필터
87.3 앱 링크 인텐트 처리하기
87.4 앱을 웹사이트와 연관시키기
87.5 요약
CHAPTER 88 앱 링크 예제 프로젝트
88.1 예제 앱에 관하여
88.2 데이터베이스 스키마
88.3 프로젝트 실행하기
88.4 URL 매핑 추가하기
88.5 인텐트 필터 추가하기
88.6 인텐트 처리 코드 추가하기
88.7 앱 링크 테스트하기
88.8 앱 링크를 웹사이트에 연결하기
88.9 요약
CHAPTER 89 안드로이드 스튜디오 프로파일러
89.1 안드로이드 프로파일러 사용하기
89.2 최신 프로파일링 활성화하기
89.3 안드로이드 프로파일러 도구 창
89.4 Sessions 패널
89.5 CPU 프로파일러
89.6 메모리 프로파일러
89.7 네트워크 프로파일러
89.8 에너지 프로파일러
89.9 요약
CHAPTER 90 안드로이드 생체 인증
90.1 생체 인증 개요
90.2 생체 인증 프로젝트 생성하기
90.3 장치의 지문 인증 구성하기
90.4 매니페스트 파일에 생체 퍼미션 추가하기
90.5 사용자 인터페이스 디자인하기
90.6 Toast 메시지를 보여 줄 함수 추가하기
90.7 장치의 보안 설정 확인하기
90.8 인증 콜백 구성하기
90.9 CancellationSignal 추가하기
90.10 생체 인증 시작시키기
90.11 앱 테스트하기
90.12 요약
CHAPTER 91 안드로이드 앱 번들 생성, 테스트, 업로딩
91.1 앱 출시 준비 절차
91.2 안드로이드 앱 번들
91.3 구글 플레이 개발자 콘솔 계정 등록하기
91.4 콘솔에서 앱 구성하기
91.5 구글 플레이 앱 서명 활성화하기
91.6 키스토어 파일 생성하기
91.7 안드로이드 앱 번들 생성하기
91.8 테스트 APK 파일 생성하기
91.9 구글 플레이 개발자 콘솔에 앱 번들 업로드하기
91.10 앱 번들 살펴보기
91.11 테스터 관리하기
91.12 테스트를 위한 앱 출시
91.13 새 버전의 앱 번들 업로드하기
91.14 앱 번들 파일 분석하기
91.15 요약
CHAPTER 92 안드로이드 동적 기능 모듈
92.1 동적 기능 모듈 개요
92.2 동적 기능 모듈 아키텍처
92.3 동적 기능 모듈 생성하기
92.4 기존 모듈을 동적 기능 모듈로 변환하기
92.5 동적 기능 모듈 사용하기
92.6 대형 동적 기능 모듈 처리하기
92.7 요약
CHAPTER 93 동적 기능 모듈 예제 프로젝트
93.1 DynamicFeature 프로젝트 생성하기
93.2 프로젝트에 동적 기능 지원 추가하기
93.3 기본 액티비티 UI 디자인하기
93.4 동적 기능 모듈 추가하기
93.5 동적 기능 모듈 살펴보기
93.6 동적 기능 모듈 액티비티 추가하기
93.7 launchFeature() 함수 구현하기
93.8 테스트를 위해 앱 번들 업로드하기
93.9 installFeature() 함수 구현하기
93.10 업데이트 리스너 추가하기
93.11 대형 다운로드 처리하기
93.12 지연 설치 사용하기
93.13 동적 기능 모듈 제거하기
93.14 요약
CHAPTER 94 안드로이드 스튜디오의 그래들 개요
94.1 그래들 개요
94.2 그래들과 안드로이드 스튜디오
94.2.1 합리적인 디폴트
94.2.2 의존성
94.2.3 빌드 변이
94.2.4 매니페스트 항목
94.2.5 APK 서명하기
94.2.6 ProGuard 지원
94.3 최상위 수준의 그래들 빌드 파일
94.4 모듈 수준의 그래들 빌드 파일
94.5 빌드 파일에 서명 설정 구성하기
94.6 명령행에서 그래들 작업 실행하기
94.7 요약
찾아보기