책소개

핵심을 꼼꼼하게 갖춘 안드로이드 앱 개발 필독서
자바로 익히는 안드로이드 프로그래밍의 원리

안드로이드 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

_04 _ 레이아웃을 활용한 다양한 뷰 배치
__4.1. LinearLayout
___4.1.1. LinearLayout 소개
___4.1.2. 레이아웃 중첩
___4.1.3. LinearLayout 속성
__4.2. RelativeLayout
___4.2.1. RelativeLayout 소개
___4.2.2. align 속성
___4.2.3. alignParentXXX 속성
__4.3. FrameLayout
__4.4. GridLayout
___4.4.1. GridLayout 소개
___4.4.2. GridLayout 속성
__4.5. ConstraintLayout

_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

_09 _ 머티리얼 디자인의 뷰
__9.1. DrawerLayout과 NavigationView
___9.1.1. DrawerLayout
___9.1.2. NavigationView
__9.2. ExtendedFloatingActionButton
__9.3. TabLayout
__9.4. AppBarLayout
__9.5. CoordinatorLayout

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. 지도 제어

작가

강성윤