책소개
자바와 코틀린으로 직접 구현하며 익히는 실전형 앱 프로그래밍 완벽 가이드!안드로이드 9.0 파이(Pie), Java Kotlin, 안드로이드 스튜디오 3.2, 실전형 앱 프로젝트로또번호생성기, 퀴즈잠금화면앱, 펀치력측정앱, 서울시화장실찾기앱, 익명SNS앱 등“이런 앱이 있다면 좋지 않을까?”라는 가장 기본적인 아이디어로 시작되는 앱 개발!하지만 알아야 할 자바(Java) 문법과 개념들로 인해 실제 출시까지의 앱 개발 과정은 생각보다 쉽지 않다. 더구나 보다 간결한 문법과 쉬운 기능 구현을 목표로 2011년 JetBrains社에서 발표된 코틀린(Kotlin)이 특유의 장점을 바탕으로 2017년 구글 안드로이드 공식 개발 언어로 채택되면서, 안드로이드 개발을 막 시작하려는 분들에게는 자칫 부담이 커질 수 있는 상황이다. 이에 본 책은 우선 기존의 자바와 코틀린을 비교 설명하고, 모든 실전형 앱 프로젝트들을 자바와 코틀린 각각으로 구현하는 과정을 통하여 보다 쉽고 효율적인 이해를 도울 수 있도록 구성하였다.
저자소개
Adobe Flash Engie 안드로이드 포팅, 삼성 스마트 티비 LGU+ IPTV 앱 개발, 하나카드 모바일 간편결제 서비스 개발, SK Broadband 안드로이드 STB 개발, TJ 안드로이드 POS 개발, 호서직업전문학교 컴퓨터공학과 모바일 프로그래밍 강의, 개발자 커뮤니티 자바카페 운영진
목차
머리말도서 가이드부록 다운로드목차CHAPTER .1 안드로이드 (Android) 소개1.1 안드로이드란?1.2 안드로이드의 특징 01 오픈 소스와 무료 라이선스 02 Java와 Kotlin 03 Android Studio 04 빠르고 지속적인 업데이트1.3 안드로이드의 연혁CHAPTER .2 개발 환경 구축2.1 JDK(Java Development Kit) 설치2.2 Android Studio 설치CHAPTER .3 안드로이드 베이직 by "Hello World"3.1 프로젝트(Project) 생성과 실행3.2 프로젝트의 구조3.3 프로그래밍의 기본3.4 컴파일(Compile)과 빌드(Build)3.5 주석(Comment)의 이해3.6 시작점(Entry Point)과 매니페스트(Manifest) 파일3.7 변수와 데이터 형식3.8 제어와 분기방법(if, else if, else, for, while)3.9 함수와 메소드(Method), 리소스(Resource)3.10 객체 지향(OOP)과 클래스(Class), 인스턴스(Instance)3.11 라이브러리(Library)와 프레임워크(Framework), 콜백(Callback)CHAPTER .4 Kotlin 실전 프로그래밍4.1 Kotlin에 대하여 01 Kotlin의 특징 02 학습 주안점4.2 샘플 앱 제작 01 프로젝트 생성 02 코드 살펴보기4.3 확장 플러그인(Plug-in) 01 기능과 활용 02 초기 화면 UI 구현 03 Java/Kotlin 공통 UI 구현 04 Java/Kotlin 개별 액티비티(Activity) 05 메인 액티비티 연결 06 Java용 BMI 계산 앱 07 Kotlin용 BMI 계산 앱4.4 변수 01 변수 선언 02 변수 샘플용 연결 UI 03 공통 UI 구현 04 개별 액티비티 05 메인 액티비티 연결 06 Java 변수 샘플 앱 07 변수의 가변성과 불변성 08 Kotlin 변수 샘플 앱 09 변수의 타입 추론4.5 프로그램 흐름 제어 01 공통 UI 구현 02 개별 액티비티 03 Java의 if, else, switch 04 Kotlin의 if, else, when 05 Kotlin의 반복문 활용4.6 함수 01 함수 선언 방법 02 Java의 정적 유틸리티 클래스 03 Kotlin의 최상위 함수 04 Java에서 Kotlin 최상위 함수 사용 05 Java의 함수 디폴트 파라미터 06 Kotlin의 함수의 디폴트 파라미터 07 함수의 이름 붙인 인자4.7 클래스(Class) 01 테스트 케이스 02 Java/Kotlin 개별 테스트 케이스 03 Getter, Setter 클래스 04 프로퍼티(Property)와 필드(Field) 05 클래스 상속 06 클래스 위임 07 프로퍼티 위임 08 Singleton 패턴 및 Object 클래스 09 Data 클래스 10 클래스의 가시성 변경자 11 내부 클래스와 중첩 클래스4.8 람다(Lambda) 01 람다란? 02 람다 식의 문법 03 Collection의 함수형 API4.9 확장 함수 01 확장 함수란? 02 확장 함수의 사용 03 Java의 확장 함수 호출4.10 널 안전성(Null Safety) 01 Null, Null Pointer Exception(NPE) 02 Kotlin의 타입 시스템, Null 가능성 03 안전한 호출 연산자 ?. 엘비스 연산자 ?:CHAPTER .5 로또 번호 생성기5.1 로또 번호 생성 앱이란?5.2 프로젝트 생성 01 프로젝트와 패키지 네임(Package Name) 02 타겟 플랫폼 및 최소 지원(Minimum SDK) 버전 03 액티비티 템플릿 선택 04 액티비티 생성 마무리5.3 화면 설계와 액티비티 01 액티비티의 개념 02 화면 설계 03 실습용 액티비티 생성5.4 인텐트(Intent) 및 화면 전환 01 인텐트의 개념 02 인텐트 실습용 TestActivity 03 다른 액티비티 간 화면 전환 04 인텐트 유형 및 구성 요소5.5 뷰(View), 뷰 그룹(View Group), 레이아웃(Layout) 01 뷰의 속성 02 뷰 그룹과 레이아웃5.6 Absolute 레이아웃과 멀티 해상도 지원 01 Absolute 레이아웃이란?5.7 Linear 레이아웃으로 첫 화면 구현 01 Linear 레이아웃의 개념과 Orientation 02 gravity, layout_gravity 속성 03 Margin 04 Padding 05 weight 속성 06 레이아웃 중첩(nested) 07 메인 화면 UI 완성5.8 Relative 레이아웃으로 별자리 입력 화면 구현 01 Relative 레이아웃의 개념 02 부모 뷰 기준 배치 03 RTL(Right To Left) 지원 04 형제 뷰 기준 배치 05 Relative 레이아웃으로 화면 완성5.9 Constraint 레이아웃으로 이름 입력 화면 구현 01 Constraint 레이아웃의 tools:layout_editor 속성 02 Constraint 레이아웃과 제약 관계 03 다른 뷰와의 제약 04 Bias 05 Aspect Ratio 06 Circle 제약 07 가이드라인(Guideline) 08 체인(Chain) 09 Constraint 레이아웃으로 화면 완성5.10 테마(Theme)와 UI 01 테마의 개념과 컬러 생성 02 테마 생성 및 사용 색 지정 03 액티비티에 테마 지정5.11 Constraint 레이아웃과 인텐트 복습 01 가이드라인 배치 02 AppCompatTextView 생성 03 로또 공 이미지 배치 04 하단 고정 이미지 추가 05 인텐트 활용한 UI 연결5.12 Random, Shuffle 01 난수란? 02 Random 03 Shuffle5.13 Hash Code 01 해시코드의 개념 02 입력된 이름별 로또 번호 생성 03 매일 다른 로또 번호 생성 04 별자리별 로또 번호 생성5.14 앱 아이콘, 이름, 동적 테마 01 앱의 이름 변경 02 문자열 리소스 및 다국어 지원 03 앱 아이콘 변경5.15 정리CHAPTER .6 구글 플레이스토어 개발자 등록 및 배포6.1 구글 플레이 개발자 등록 01 구글 계정 생성 02 개발자 계정 등록6.2 플레이스토어 배포 01 Signed APK 생성 02 스토어 등록정보 설정 03 앱 버전 준비 04 콘텐츠 등급 설정 05 가격 및 앱 배포 설정6.3 정리CHAPTER .7 퀴즈 잠금화면 앱7.1 퀴즈 잠금화면 앱이란?7.2 설정 화면과 앱 데이터 저장 01 프로젝트 생성 및 설정 화면 구현 02 안드로이드 앱 데이터 개요7.3 파일로 앱 데이터 저장 01 내부 저장소의 앱 전용 디렉토리에 파일 저장 02 외부 저장소 사용 및 권한 요청 03 외부 저장소 앱 전용 디렉토리에 파일 저장 04 외부 저장소 임의 경로에 저장7.4 SharedPreference 01 SharedPreference 테스트 UI 구현 02 SharedPreference로 앱 데이터 저장 03 PreferenceFragment7.5 브로드캐스트(BroadcastReceiver) 01 브로드캐스트와 브로드캐스트 리시버(Receiver) 02 브로드캐스트 수신 제한 03 브로드캐스트 매니페스트 등록 04 런타임에 브로드캐스트 리시버 등록7.6 서비스(Service) 01 서비스의 특징 02 LockScreenService 구현7.7 퀴즈 잠금 설정화면 01 Preference XML 리소스 제작 02 PreferenceFragment로 환경 설정 UI 구현7.8 퀴즈 잠금화면 UI 01 잠금화면용 액티비티 UI 구현 02 SeekBar 활용 03 9-Patch 이미지7.9 퀴즈 잠금화면 앱 마무리 01 화면 꺼짐 후 퀴즈 화면 구현 02 퀴즈 데이터 생성 및 적용 03 SeekBar로 정/오답 체크 04 오답인 경우 진동 알림 구현 05 퀴즈별 정/오답 횟수 저장 06 재부팅 후 자동 실행 설정7.10 정리 및 도전 과제 01 정리 02 도전 과제CHAPTER .8 펀치력 측정 앱8.1 펀치력 측정 앱이란?8.2 프로젝트 생성과 첫 화면 UI 구현 01 첫 화면 UI 작성 02 결과 화면 UI 작성8.3 가속도 센서 01 3방향 가속도 센서 02 가속도 센서의 사용법8.4 구글 게임 서비스 리더보드 연동 01 결과 화면 구현 02 구글 게임 서비스 활성화 03 구글 게임 서비스 리더보드 연동 설정 04 구글 리더보드 코드 구현 05 에뮬레이터 가상 센서 활용8.5 애니메이션 효과 01 뷰 애니메이션 Translate 02 뷰 애니메이션 Rotate 03 뷰 애니메이션 Scale, Alpha 04 뷰 애니메이션 Callback, Stop 05 속성 애니메이션 Translate, Rotate, Scale, Alpha 06 속성 애니메이션 Background Color Animation8.6 정리 및 도전 과제 01 정리 02 도전 과제CHAPTER .9 서울시 화장실 찾기 앱9.1 서울시 화장실 찾기 앱이란?9.2 프로젝트 생성9.3 구글 맵 연동 01 구글 맵 사용 등록 02 프로젝트에 구글 맵 적용 03 구글 맵 포함된 레이아웃 생성 04 구글 맵 연동 코드 작성9.4 서울 열린 데이터 광장 API 연동 01 회원 가입 02 공공 화장실 위치 API 신청 03 인터넷 사용 권한 요청 04 UI 쓰레드와 네트워크 작업 05 공공 화장실 API 연동 코드 작성9.5 구글 맵 클러스터링 01 구글 맵 클러스터링이란? 02 ClusterItem 구현 03 ClusterRenderer 구현 04 구글 맵에 ClusterManager 연동9.6 검색 기능 사용 01 Search Bar UI 제작 02 Search Bar 기능 구현9.7 정리 및 연습 문제 01 정리 02 연습 문제CHAPTER .10 Firebase 연동 익명 SNS10.1 익명 소셜 서비스 앱이란?10.2 프로젝트 생성 및 화면 설계10.3 목록 화면 UI 작성 01 메인 화면 구현 02 메인 화면 카드 구성 03 테마 및 컬러 지정10.4 Firebase 연동 01 Firebase 데이터베이스 소개 02 데이터베이스와 실시간 데이터베이스 03 Firebase 가입 04 Firebase 연동 05 Firebase 연동 테스트10.5 게시글 작성 화면 및 기능 구현 01 Post, Comment 클래스 구현 02 게시글 작성 레이아웃 구현 03 배경 이미지 목록 카드 UI 작성 04 배경 화면 선택 목록용 RecyclerView 적용 05 Firebase에 게시글 업로드 기능 구현10.6 게시글 목록 및 상세 보기 기능 구현 01 게시글 목록 보기 기능 구현 02 게시글 상세 보기 UI 구현 03 상세 보기 화면 연결 04 상세 보기 화면 구현 05 댓글 쓰기 기능 구현10.7 정리 및 연습 문제 01 정리 02 연습 문제Appendix 부록▷ 추가 개발정보11.1 안드로이드 기본 요소 샘플 01 NavigationView, Viewpager, Fragment 예제 02 AlertDialog, DialogFragment 예제 03 ProgressBar, GridView 예제 04 음성 및 동영상 재생/저장 05 SQLite 06 지문 인식 07 Parcelable 08 WebView 09 FCM 푸시 10 지자기, 자이로 센서11.2 안드로이드 개발 툴 사용 01 ADB 환경 설정 02 자주 사용하는 유용한 ADB 명령어 03 Monkey 테스트 04 안드로이드 스튜디오 Debugger(디버거) 사용 방법 05 Memory Leak과 활용할 수 있는 도구들11.3 안드로이드 최근 개발 트렌드 01 안드로이드 9(Pie) 변경 사항 02 Android Data Binding 03 Anko 라이브러리11.4 앱 제작 가이드 01 앱 제작 공통 가이드 02 샘플 앱으로 보는 제작 방법 03 앱 제작을 위한 기능별 용어 정리 04 자주 발생하는 예외 및 에러와 해결 방법▷ 찾아보기