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