책 소개
자바와 코틀린으로 직접 구현하며 익히는 실전형 앱 프로그래밍 완벽 가이드!
안드로이드 11, Java+Kotlin, 안드로이드 스튜디오 4.1, 실전형 앱 프로젝트
로또번호생성기, 퀴즈잠금화면앱, 펀치력측정앱, 서울시화장실찾기앱, 익명SNS앱 등
“이런 앱이 있다면 좋지 않을까?”라는 가장 기본적인 아이디어로 시작되는 앱 개발!
하지만 알아야 할 자바(Java) 문법과 개념들로 인해 실제 출시까지의 앱 개발 과정은 생각보다 쉽지 않습니다. 더구나 보다 간결한 문법과 쉬운 기능 구현을 목표로 JetBrains社에서 발표된 코틀린(Kotlin)이 특유의 장점을 바탕으로 구글 안드로이드 공식 개발 언어로 채택되면서, 안드로이드 개발을 막 시작하려는 분들에게는 자칫 부담이 커질 수 있는 상황입니다.
이에 본 책은 우선 기존의 자바와 코틀린을 비교 설명하고, 모든 실전형 앱 프로젝트들을 자바와 코틀린 각각으로 구현하는 과정을 통하여 보다 쉽고 효율적인 이해를 도울 수 있도록 구성하였습니다.
책의 첫 기획 단계에서부터 고려된 가장 중요한 사항은 기존 안드로이드 도서와의 차별화를 꾀하기 위한 2가지 측면이었습니다.
첫째, 프로그램 개발의 전반적인 개념을 수록하였습니다. 많은 안드로이드 서적은 이미 Java 프로그래밍 언어를 선행 학습으로 익힌 것을 전제하므로, 프로그래밍과 Java 언어에 대한 개념이 없다면 이를 응용한 안드로이드 책은 어려워질 수밖에 없습니다. 이 책은 프로그래밍 전반에 대한 내용과 Java는 물론, Kotlin(코틀린)에 대한 내용까지 수록하였습니다. 물론 프로그래밍의 개념 전반과 Java, Kotlin까지 모두 1 권으로 담기에는 부족한 측면도 있겠지만, 실제 프로그래밍 과정에서 모든 관련 이론과 지식을 전체적으로 사용하는 것은 아니므로 적어도 안드로이드 앱 개발을 위해 반드시 알아야 하거나 실무에서 자주 사용되는 API 등 보다 기능적인 필수 사항들을 챙길 수 있다면 앱 개발을 희망 하는 분들께는 큰 도움이 될 것이라 생각했습니다.
둘째, 안드로이드와 프로그래밍의 개념을 단순 나열식으로 접근하는 것이 아니라, 실전형 앱 위주의 예제를 통해 접근하려고 노력한 부분입니다. 안드로이드의 기초적인 요소들을 나열한 후 그 요소들을 간단히 사용해 보는 구성이 아닌, 이 책은 먼저 실제 앱들과 비슷한 앱을 제시하고 해당 앱을 구현해 가는 과정을 통해 프로그래밍 개념들을 함께 완성해 갑니다. 이는 독자 여러 분이 프로그래밍에 대한 두려움보다 더욱 도전적인 자세로 "나도 할 수 있다"는 자신감을 갖기를 원했기 때문입니다.
많은 프로그램이 모든 지식을 요구하는 것이 아니며, 실무의 프로 개발자들 역시 모든 관련 지식을 익혀 개발하는 것은 아닙니다. 오히려 개발 분야는 매우 빠르게 변화하기 때문에 개발의 시작 전에 모든 것을 알고 개발하는 경우는 손에 꼽을 정도로 적습니다. 책에서 다룬 예제들을 최대한 많이 변경해 가며 그 개념과 필요성을 자신의 것으로 만들어 가다 보면 다른 프로그래밍을 배울 때에도 많은 도움이 될 것이라 생각합니다. 이 책과 함께할 모든 독자분들이 안드로이드 앱 개발은 물론 나아가 희망하는 모든 프로그램 영역에서 두려움보다는 자신감과 도전 정신을 갖게 되기를 희망합니다.
작가 소개
안귀정
Adobe Flash Engie 안드로이드 포팅, 삼성 스마트 티비 LGU+ IPTV 앱 개발, 하나카드 모바일 간편결제 서비스 개발, SK Broadband 안드로이드 STB 개발, TJ 안드로이드 POS 개발, 호서직업전문학교 컴퓨터공학과 모바일 프로그래밍 강의, 개발자 커뮤니티 자바카페 운영진
목 차
머리말
도서 가이드
부록 다운로드
목차
CHAPTER .1 안드로이드 (Android) 소개
1.1 안드로이드란?
1.2 안드로이드의 특징
1.3 안드로이드의 연혁
CHAPTER .2 개발 환경 구축
2.1 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에 대하여
4.2 샘플 앱 제작
4.3 확장 플러그인(Plug-in)
4.4 변수
4.5 프로그램 흐름 제어
4.6 함수
4.7 클래스(Class)
4.8 람다(Lambda)
4.9 확장 함수
4.10 널 안전성(Null Safety)
CHAPTER .5 로또 번호 생성기
5.1 로또 번호 생성 앱이란?
5.2 프로젝트 생성
5.3 화면 설계와 액티비티
5.4 인텐트(Intent) 및 화면 전환
5.5 뷰(View), 뷰 그룹(View Group), 레이아웃(Layout)
5.6 Absolute 레이아웃과 멀티 해상도 지원
5.7 Linear 레이아웃으로 첫 화면 구현
5.8 Relative 레이아웃으로 별자리 입력 화면 구현
5.9 Constraint 레이아웃으로 이름 입력 화면 구현
5.10 테마(Theme)와 UI
5.11 Constraint 레이아웃과 인텐트 복습
5.12 Random, Shuffle
5.13 Hash Code
5.14 앱 아이콘, 이름, 동적 테마
5.15 정리
CHAPTER .6 구글 플레이스토어 개발자 등록 및 배포
6.1 구글 플레이 개발자 등록
6.2 플레이스토어 배포
6.3 정리
CHAPTER .7 퀴즈 잠금화면 앱
7.1 퀴즈 잠금화면 앱이란?
7.2 설정 화면과 앱 데이터 저장
7.3 파일로 앱 데이터 저장
7.4 SharedPreference
7.5 브로드캐스트(BroadcastReceiver)
7.6 서비스(Service)
7.7 퀴즈 잠금 설정화면
7.8 퀴즈 잠금화면 UI
7.9 퀴즈 잠금화면 앱 마무리
7.10 정리 및 도전 과제
CHAPTER .8 펀치력 측정 앱
8.1 펀치력 측정 앱이란?
8.2 프로젝트 생성과 첫 화면 UI 구현
8.3 가속도 센서
8.4 구글 게임 서비스 리더보드 연동
8.5 애니메이션 효과
8.6 정리 및 도전 과제
CHAPTER .9 서울시 화장실 찾기 앱
9.1 서울시 화장실 찾기 앱이란?
9.2 프로젝트 생성
9.3 구글 맵 연동
9.4 서울 열린 데이터 광장 API 연동
9.5 구글 맵 클러스터링
9.6 검색 기능 사용
9.7 정리 및 연습 문제
CHAPTER .10 Firebase 연동 익명 SNS
10.1 익명 소셜 서비스 앱이란?
10.2 프로젝트 생성 및 화면 설계
10.3 목록 화면 UI 작성
10.4 Firebase 연동
10.5 게시글 작성 화면 및 기능 구현
10.6 게시글 목록 및 상세 보기 기능 구현
10.7 정리 및 연습 문제
역자 소개
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |