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