핵심을 꼼꼼하게 갖춘 안드로이드 앱 개발 필독서 자바로 익히는 안드로이드 프로그래밍의 원리
안드로이드 12 버전의 릴리즈에 발맞춰 「깡쌤의 안드로이드 프로그래밍 with 자바」가 새롭게 준비되었다. 안드로이드 앱 개발의 시작인 사용자 인터페이스의 기본 구조부터 컴포넌트의 개념과 구글 기본 앱과의 연동까지 명확하게 설명하고 다양한 기능의 원리를 파악하는 데 주력한다. 더불어, 차근차근 따라 할 수 있는 실습을 담아 문제 해결 능력을 길러주고 안드로이드 앱 개발을 배울 때 한 번쯤 궁금할 만한 질문과 그에 대한 답으로 학습을 끝까지 완주할 수 있도록 돕는다.
목차
Part 01 안드로이드 시작하기 _01 _ 개발환경을 구축하자! __1.1. 안드로이드 스튜디오 개발환경 구축 ___1.1.1. 안드로이드 스튜디오 설치 ___1.1.2. 안드로이드 스튜디오 설정 __1.2. 첫 번째 앱 만들고 실행하기 ___1.2.1. 프로젝트 생성 ___1.2.2. AVD 매니저 ___1.2.3. AVD에서 실행 ___1.2.4. 스마트폰에서 실행 ___1.2.5. 개발 편의를 위한 설정 __1.3. 앱 배포 ___1.3.1. AAB 파일의 이해 ___1.3.2. AAB 파일로 앱 빌드 ___1.3.3. 구글 Play 스토어에 앱 배포
_02 _ 안드로이드 프로젝트 이해 __2.1. 안드로이드 앱 개발 특징 ___2.1.1. 안드로이드의 특징 ___2.1.2. 안드로이드 플랫폼 아키텍처 ___2.1.3. 컴포넌트 기반 개발 ___2.1.4. 리소스를 이용한 개발 __2.2. 개발 디렉터리와 파일 구조 ___2.2.1. 앱의 디렉터리와 파일 ___2.2.2. R.java의 이해 __2.3. 그레이들 파일 ___2.3.1. settings.gradle ___2.3.2. 프로젝트 수준의 그레이들 ___2.3.3. 모듈 수준의 그레이들 __2.4. Hello World 앱 코드 분석 ___2.4.1. AndroidManifest.xml ___2.4.2. MainActivity.java ___2.4.3. activity_main.xml __2.5. 안드로이드 버전
Part 02 기본 앱을 만들어보자 _03 _ 사용자 인터페이스 __3.1. UI의 기본 구조 ___3.1.1. 액티비티-뷰 구조 ___3.1.2. UI 프로그램 작성 방법: 자바 코드 VS 레이아웃 XML ___3.1.3. 뷰의 기초 속성 __3.2. 뷰 아키텍처 ___3.2.1. 뷰의 계층구조 ___3.2.2. 뷰 계층구조 구현 __3.3. 기초 뷰 활용 ___3.3.1. TextView ___3.3.2. ImageView ___3.3.3. EditText ___3.3.4. Button ___3.3.5. Checkbox와 RadioButton __3.4. ViewBinding
_05 _ 사용자 이벤트 처리 __5.1. 뷰 이벤트 ___5.1.1. 이벤트 프로그램 구조 ___5.1.2. 다양한 이벤트 처리 __5.2. 터치 이벤트와 키 이벤트 ___5.2.1. 터치 이벤트 ___5.2.2. 키 이벤트
_06 _ 리소스 활용 및 스마트폰 크기 호환성 __6.1. 안드로이드 리소스 ___6.1.1. 리소스 종류 ___6.1.2. 다양한 리소스 활용 __6.2. 스마트폰 크기 호환성 ___6.2.1. 리소스 폴더명 조건 명시법 ___6.2.2. WindowMetrics ___6.2.3. 논리적 단위로 스마트폰 크기 호환성 확보
_07 _ 다양한 사용자 알림 효과 __7.1. 퍼미션 ___7.1.1. 퍼미션이란 ___7.1.2. 퍼미션 허용 __7.2. 진동과 소리 ___7.2.1. 진동 울리기 ___7.2.2. 소리 울리기 __7.3. 다이얼로그 ___7.3.1. 토스트 메시지 ___7.3.2. 알림 창 ___7.3.3. 목록 다이얼로그 ___7.3.4. 날짜 선택 다이얼로그 ___7.3.5. 시간 선택 다이얼로그 ___7.3.6. 커스텀 다이얼로그 __7.4. 알림 ___7.4.1. 알림의 기본 구성 ___7.4.2. NotificationChannel ___7.4.3. 기본적인 알림 구성 ___7.4.4. 알림의 다양한 구성
Part 03 상용 앱 수준의 화면을 구성하자 _08 _ JetPack의 뷰 __8.1. JetPack의 라이브러리 ___8.1.1. JetPack이란 ___8.1.2. 안드로이드 API Level과 하위 호환성 __8.2. ActionBar와 메뉴 ___8.2.1. ActionBar ___8.2.2. 메뉴 ___8.2.3. Toolbar __8.3. Fragment ___8.3.1. Fragment 이해 ___8.3.2. Fragment 작성법 ___8.3.3. Fragment 생명주기 __8.4. RecyclerView ___8.4.1. RecyclerView 소개 ___8.4.2. Adapter와 ViewHolder ___8.4.3. LayoutManager ___8.4.4. ItemDecoration __8.5. ViewPager2
Part 04 컴포넌트를 제대로 이해하자 _10 _ 액티비티 __10.1. 인텐트 ___10.1.1. 인텐트의 기본 개념 ___10.1.2. 명시적 인텐트와 암시적 인텐트 ___10.1.3. 인텐트 필터 ___10.1.4. Extra 데이터 ___10.1.5. 결과 되돌리기 - startActivityForResult() ___10.1.6. 결과 되돌리기 ActivityResultLauncher __10.2. 액티비티 생명주기 ___10.2.1. 생명주기 ___10.2.2. 액티비티 상태 저장 __10.3. 태스크 관리 ___10.3.1. 시스템의 태스크 관리 ___10.3.2. 태스크 제어 __10.4. 액티비티를 위한 다양한 설정 ___10.4.1. 키보드 제어 ___10.4.2. 화면 방향과 전체화면 __10.5. ANR과 스레드-핸들러 ___10.5.1. 액티비티 ANR ___10.5.2. RxJava를 이용한 ANR 해결
_11 _ 브로드캐스트 리시버와 서비스 __11.1. 브로드캐스트 리시버 ___11.1.1. 브로드캐스트 리시버 이해 ___11.1.2. 브로드캐스트 리시버 작성 방법 ___11.1.3. 시스템 상태 파악 __11.2. 서비스 ___11.2.1. 서비스 작성 방법 ___11.2.2. 서비스 생명주기 ___11.2.3. Messenger 바인딩 ___11.2.4. 패키지 공개 상태 ___11.2.5. AIDL __11.3. 백그라운드 제약 ___11.3.1. 브로드캐스트 리시버 제약 ___11.3.2. 서비스 제약 ___11.3.3. JobScheduler
_12 _ 콘텐츠 프로바이더 __12.1. 콘텐츠 프로바이더 이해 ___12.1.1. 콘텐츠 프로바이더 구조 ___12.1.2. 콘텐츠 프로바이더 작성법 ___12.1.3. 콘텐츠 프로바이더 이용 __12.2. 구글 기본 앱 연동 ___12.2.1. 주소록 앱 연동 ___12.2.2. 카메라 앱 연동 ___12.2.3. 갤러리 앱 연동 ___12.2.4. 지도 앱과 전화 앱 연동
Part 05 다양한 기능을 구현하자 _13 _ 데이터 영속적 저장 __13.1. SQLite을 이용한 영속화 ___13.1.1. SQLiteDatabase 클래스 ___13.1.2. SQLiteOpenHelper 클래스 ___13.1.3. insert( ), query( ), update( ), delete( ) 함수 이용 __13.2. 파일 읽고 쓰기 ___13.2.1. 외부 저장 공간 이용 ___13.2.2. 내부 저장 공간 이용 __13.3. Preferences ___13.3.1. SharedPreferences ___13.3.2. 앱 설정 자동화 ___13.3.3. 설정 제어 및 이벤트 처리
_14 _ 네트워크 프로그래밍 __14.1. 네트워크 정보 활용 ___14.1.1. TelephonyManager ___14.1.2. ConnectivityManager __14.2. Retrofit2 5 ___14.2.1. 매니페스트 설정 ___14.2.2. Retrofit2 구조 ___14.2.3. Retrofit2 어노테이션 __14.3. Glide 라이브러리 __14.4. 파이어베이스 클라우드 메시징
_15 _ Geo 프로그래밍 __15.1. 위치 정보 획득 - LocationManager ___15.1.1. 위치 정보 제공자 ___15.1.2. 위치 정보 획득 __15.2. 위치정보 획득 - Fused API __15.3. GoogleMap ___15.3.1. 지도 출력 ___15.3.2. 지도 제어