서브메뉴
검색
본문
Powered by NAVER OpenAPI
-
될 때까지 안드로이드 (채팅, 미세먼지 정보 앱 개발 과정 수록)
저자 : 오준석
출판사 : 루비페이퍼
출판년 : 2018
ISBN : 9791186710289
책소개
모바일 앱 개발을 위한 1:1 밀착 코딩
이 책은 안드로이드 프로그래밍 학습 과정을 총 4부로 나누어 단계별로 진행할 수 있게 구성했습니다. 1부에서는 처음 해보는 독자를 위해 환경설정부터 첫 번째 앱을 만들고 이를 분석하는 과정까지 상세하게 담았습니다. 그리고 2부와 3부에서는 안드로이드 4대 컴포넌트를 중심으로 앱을 개발할 때 필요한 핵심적인 내용과 최근에 자주 사용되는 프로그래밍 기법 등을 충분하게 담았습니다. 마지막 4부에서는 서버 기술을 쉽게 이용할 수 있는 구글의 Firebase에 대해 살펴보고 이를 활용한 채팅 앱을 개발하는 전체 과정을 담았습니다. 또한, 이 책의 최종 미션이라고 할 수 있는 '미세먼지 정보 앱'을 직접 개발해보면서 실전 감각을 키울 수 있도록 안내합니다.
- 출판사 서평 -
각 장별로 소개하는 주요 개념을 파악했다면 '따라 해 보세요' 코너에서 앱을 만들고 내 휴대폰에서 직접 실행해보세요. 너무 복잡한 설명은 생략하고 앱을 만드는 데 필요한 만큼만 충분하게 담았습니다. 혹시 실습을 진행하는 데 어려움이 있다면 저자가 진행하는 라이브 코딩과 해설 동영상을 참고해보세요. 안드로이드 스튜디오에서 프로젝트 파일을 어떻게 구성하고 코딩하는지, 그리고 레이아웃 구성과 실행 과정 등 책에 담기 어려운 디테일을 보여줍니다. 또한, 저자가 운영 중인 페이스북 페이지에 접속하면 이 책을 학습하는 데 도움을 주는 다양한 정보를 얻을 수 있습니다.
- 이 책의 특징 -
- 구글 Play 스토어에 올라가 있는 미세먼지 정보 앱의 전체 개발 과정을 수록했습니다.
- 전문 지식이 없어도 서버 기술을 사용할 수 있는 Firebase를 경험할 수 있습니다.
- Firebase를 통해 채팅 앱을 개발하는 전체 과정을 수록했습니다.
- 책에 수록된 실습 프로젝트를 대상으로 라이브 코딩 및 해설 동영상을 제공합니다.
- 안드로이드 8.0 오레오, 안드로이드 스튜디오 3 기반 최신 사항을 반영했습니다.
: 예제 소스: https://github.com/junsuk5/android-first-book
목차
1부 천 리 길도 한 걸음부터
01장 _ 안드로이드 앱 개발 준비하기
1.1. 안드로이드 버전별 특징
1.2. 안드로이드 개발 준비
1.2.1. SDK 설치
1.2.2. 안드로이드 스튜디오 설치
02장 _ 첫 번째 앱 만들기
2.1. 안드로이드 프로젝트 만들기
2.1.1. 프로젝트 생성
2.1.2. 대상 기기 및 SDK 선택
2.1.3. 화면 구성 선택
2.1.4. 액티비티 생성
2.2. 프로젝트 구성
2.2.1. app 부분 살펴보기
2.2.2. Gradle Scripts 부분 살펴보기
2.3. 그레이들 빌드 시스템
2.3.1. 프로젝트 수준 build.gradle
2.3.2. 모듈 수준 build.gradle
2.4. 앱 실행
2.4.1. 실제 기기로 실행
2.4.2. 에뮬레이터로 실행
2.4.3. 안드로이드 스튜디오에서 앱 실행
03장 _ 뷰와 뷰그룹
3.1. 뷰와 뷰그룹
3.1.1. 뷰(View)
3.1.2. 뷰그룹(ViewGroup)
3.2. 레이아웃 기초
3.2.1. XML 작성
3.2.2. XML 리소스 로딩
3.2.3. 속성(attribute)
3.2.4. 여백 다루기 : 패딩과 마진
3.3. 간단한 사용자 인터페이스 구성
3.3.1. LinearLayout 만들기
3.3.2. 문자열 입력 필드 추가
3.3.3. 문자열 리소스 추가
3.3.4. 버튼 추가
3.4. 인텐트 : 다른 액티비티 실행
3.4.1. 버튼 클릭
3.4.2. 인텐트 작성
3.4.3. 두 번째 액티비티 만들기
04장 _ 자주 사용하는 뷰, 유용한 뷰
4.1. 자주 사용하는 뷰
4.1.1. 모듈 작성하기
4.1.2. 모든 뷰의 근간 : View
4.1.3. 텍스트를 표시하자 : TextView
4.1.4. 사용자 입력을 받자 : EditText
4.1.5. 이미지를 표시하자 : ImageView
4.1.6. 버튼을 달자 : Button
4.2. 기타 유용한 뷰
4.2.1. CheckBox
4.2.2. RadioButton
4.2.3. RatingBar
4.2.4. Switch
4.2.5. SeekBar
4.2.6. SearchView
4.2.7. ProgressBar
05장 _ 레이아웃: 화면에 뷰를 수놓는 방법
5.1. LinearLayout (선형 레이아웃)
5.1.1. orientation 속성
5.1.2. layout_weight 속성
5.1.3. gravity 속성
5.2. RelativeLayout (상대 레이아웃)
5.2.1. 부모 뷰를 기준으로 배치
5.2.2. 특정 뷰를 기준으로 배치
5.3. FrameLayout (프레임 레이아웃)
5.4. ConstraintLayout (제약 레이아웃)
5.4.1. 사용 준비
5.4.2. 레이아웃 변환
5.4.3. 새로운 레이아웃 추가
5.4.4. 제약 추가(디자인 모드에서)
5.4.5. 제약 추가(텍스트 모드에서)
06장 _ 안드로이드는 액티비티로부터
6.1. 안드로이드의 4대 구성요소
6.2. 화면은 곧 액티비티다
6.2.1. 메인 액티비티
6.2.2. 액티비티 생성하기
6.3. 액티비티 상속의 변천사와 AppCompatActivity
6.4. 액티비티끼리 데이터 주고받기
따라 해 보세요 _ 액티비티끼리 데이터 주고받기
07장 _ 인텐트와 인텐트 필터
7.1. 인텐트 사용방법
7.2. 명시적 인텐트와 암시적 인텐트
7.2.1. 명시적 인텐트
7.2.2. 암시적 인텐트
7.2.3. 인텐트 필터
7.3. 전화 걸기 앱 만들기 : 암시적 인텐트 사용
따라 해 보세요 _ 전화 걸기 앱 만들기
7.4. 암시적 인텐트를 사용하는 다양한 예
7.5. 카카오톡에 메시지 전달하기
따라 해 보세요 _ 카카오톡에 메시지 전달하기
08장 _ 메뉴 구현하기
8.1. 액션바(ActionBar)
8.1.1. 액션바 가져오기
8.1.2. 업(Up) 내비게이션 제공하기
8.1.3. 효과적인 탐색 구현
따라 해 보세요 _ 앱 내 탐색 구현해보기
8.2. 옵션 메뉴
따라 해 보세요 _ 옵션 메뉴 사용하기
09장 _ 웹뷰: 웹 페이지 표시하기
9.1. 나만의 웹 브라우저 만들기
따라 해 보세요 _ 웹 브라우저 만들기
9.2. 웹 브라우저 보완하기
9.2.1. 인터넷 권한 설정
9.2.2. 뒤로 가기 재정의
9.2.3. 소프트 키보드 재정의
9.2.4. 뷰 숨기기
9.2.5. 키보드 숨기기
9.2.6. 뒤로 가기, 앞으로 가기, 새로 고침 메뉴 작성
9.2.7. 아이콘 제작 : 벡터 에셋
10장 _ 화면 제약을 극복하는 방법
10.1. 스크롤뷰(ScrollView)
따라 해 보세요 _ 스크롤뷰 사용하기
10.2. 리스트뷰(ListView)와 그리드뷰(GridView)
10.3. 어댑터뷰(AdapterView)
따라 해 보세요 _ 어댑터뷰 사용하기
10.4. 나만의 어댑터 만들기 : BaseAdapter
10.5. 리스트뷰의 성능 최적화 : 뷰홀더 패턴
11장 _ 기기에 데이터 저장하기: SharedPreference
11.1. 데이터를 저장하는 간단한 앱
따라 해 보세요 _ 이메일 기억하기 기능
11.2. 기기에 설치된 앱의 정보 이용
따라 해 보세요 _ 바로가기 추가와 유지하기
11.2.1. SharedPreference에 앱 정보 저장하기
11.2.2. SharedPreference에 저장된 값 불러오기
11.3. 다이얼로그 추가하기
11.3.1. 뒤로 가기 키 재정의
11.3.2. 확인/취소 버튼 추가하기
12장 _ 액티비티 생명주기
12.1. 여러 액티비티의 관리
12.2. 액티비티 생명주기 소개
12.3. 생명주기 콜백 메서드
12.3.1. 일시 정지 및 재개
12.3.2. 정지 및 재실행
12.3.3. 깅제 종료 및 실행
12.4. 화면 회전에도 끄떡없게 만들기
12.4.1. 화면 회전 시 초기화되는 상태
따라 해 보세요 _ 화면 회전에 대응하기
12.4.2. 상태 저장
12.4.3. 상태 복원
12.5. 화면 회전 막기
12.6. 다중 창 막기
13장 _ 프래그먼트: 화면을 조각조각 나누기
13.1. 프래그먼트 소개
13.1.1. 프래그먼트와 액티비티의 차이점
13.1.2. 프래그먼트를 사용하기 위한 화면 설계
13.1.3. 프래그먼트의 관리
13.2. 프래그먼트 실습
13.2.1. 프래그먼트 생성
따라 해 보세요 _ 프래그먼트 실습
13.2.2. 프래그먼트에 기능 추가
13.2.3. 프래그먼트 교체, 삭제, 추가
13.3. 다이얼로그 프래그먼트(DialogFragment)
13.3.1. AlertDialog의 생명주기
13.3.2. 다이얼로그 프래그먼트 생성
13.3.3. 다이얼로그 프래그먼트 표시
13.4. 프래그먼트와 액티비티 간의 통신(콜백 구현하기)
따라 해 보세요 _ 콜백 구현하기
13.4.1. 색상 목록을 표시하는 프래그먼트 작성
13.4.2. 색상을 표시하는 프래그먼트 작성
13.4.3. 콜백 인터페이스 정의
13.4.4. 콜백 인터페이스 구현
14장 _ 뷰페이저: 좌우로 밀리는 화면
14.1. 뷰페이저 구현 실습
따라 해 보세요 _ 좌우로 밀리는 화면 만들기
14.1.1. 프래그먼트 생성
14.1.2. 뷰페이저용 어댑터 작성
14.2. 탭 레이아웃(TabLayout)과 연동
14.2.1. 탭 레이아웃 사용 준비
14.2.2. 뷰페이저와 탭 레이아웃 연동
15장 _ 환경에 따라 화면 구성하기
15.1. 리소스 분기
15.2. 유연한 사용자 인터페이스 구축
15.2.1. 프로젝트 생성 및 샘플 데이터 준비
따라 해 보세요 _ 기사와 기사 내용 표시 앱
15.2.2. 화면이 작은 기기에서의 동작
15.2.3. 화면이 큰 기기를 위한 구현 추가
16장 _ 리소스
16.1. 리소스 개요
16.2. Drawable 리소스 : 늘어나는 말풍선 만들기
16.2.1. 비트맵 파일
16.2.2. 나인패치(9 patch)
16.2.3. 예제 실행
16.3. 언어 현지화(Localization) : 외국어 지원하기
따라 해 보세요 _ 외국어 지원하기
16.3.1. 직접 리소스를 추가하는 방법
16.3.2. 번역 편집기를 이용한 방법
16.3.3. 텍스트 리소스를 텍스트 뷰에 적용
16.3.4. 현지화 텍스트 확인
16.3.5. 텍스트 방향에 따른 현지화 처리
17장 _ 브로드캐스트 리시버
17.1. 미리 정의된 방송
17.1.1. 글로벌 방송 수신
따라 해 보세요 _ 전원이 열결되면 알리기
17.1.2. 로컬 방송 수신
17.2. 사용자 정의 방송
17.2.1. 나만의 방송 보내기
17.2.2. 나만의 방송 수신하기
17.3. 브로드캐스트 리시버의 특징
18장 _ 콘텐트 프로바이더
18.1. 콘텐트 프로바이더 소개
18.1.1. 프로바이더 사용 방법
18.1.2. 콘텐트 프로바이더 URI 목록
18.2. 프로바이더 사용을 위한 스레드 이해
18.3. 커서어댑터(CursorAdapter) 구현 예
따라 해 보세요 _ 갤러리 앱 만들기
18.3.1. Glide 라이브러리 사용
18.3.2. 그리드뷰 꾸미기
18.3.3. 그리드뷰의 아이템 클릭 이벤트 처리
19장 _ 비동기 처리
19.1. 작업 스레드와 메인 스레드
19.2. 스레드와 핸들러
따라 해 보세요 _ 다운로드 진행률 표시하기
19.2.1. 스레드와 핸들러 조합의 사용 예
19.2.2. 핸들러의 대표 메서드
19.2.3. 기타 핸들러 기능
19.3. AsyncTask
19.3.1. AsyncTask의 제네릭 타입
19.3.2. AsyncTask 작성의 4단계
19.3.3. 스레드, 핸들러를 AsyncTask로 변경
19.3.4. AsyncTask의 스레딩 규칙
19.3.5. 실행 순서
19.3.6. 태스크의 동작 취소
19.4. 카운트다운 타이머 예제 작성
따라 해 보세요 _ 카운트다운 타이머 만들기
20장 _ DB를 이용한 데이터 저장과 공유
20.1. 데이터베이스 기본부터 튼튼히
따라 해 보세요 _ DB 활용 간단한 메모장 만들기
20.1.1. 스키마 정의
20.1.2. 계약(Contract) 클래스 작성
20.1.3. SQL 헬퍼 클래스 생성
20.1.4. 헬퍼 클래스에 싱글턴 패턴 적용
20.1.5. DB의 정보 읽어오기
20.1.6. DB에 정보 삽입
20.1.7. DB에서 정보 삭제
20.1.8. DB의 정보 수정
20.2. 메모장 앱 만들면서 SQLite 익히기
20.2.1. 버튼부터 달아보자
20.2.2. 메모 작성 화면을 추가하고 버튼에 연결하기
20.2.3. DB에 저장하고 목록으로 보여주기
20.2.4. 메모를 내림차순으로 정렬하기
20.2.5. 저장된 메모를 확인하고 수정과 삭제까지
21장 _ 콘텐트 프로바이더와 로더
21.1. 프로바이더에 살며시 접근해보자
21.1.1. 데이터의 위치를 나타내는 콘텐트 URI
21.1.2. URI 패턴 분석을 돕는 UriMatcher 클래스
21.1.3. MIME 타입
21.2. 콘텐트 프로바이더 만들기
21.2.1. onCreate( ) : MemoDbHelper 객체 초기화
21.2.2. getType( ) : MIME 타입 반환
21.2.3. delete( ) : 메모 삭제 시 처리
21.2.4. insert( ) : 메모 추가
21.2.5. query( ) : 데이터 질의
21.2.6. update( ) : 업데이트
21.3. 콘텐트 프로바이더 적용하기
21.4. 로더(Loader) 맛보기
21.4.1. 로더 준비하기
21.4.2. 로더 구현하기
21.4.3. 프로바이더 수정
21.4.4. 로더에서 불필요한 로직 제거
22장 _ 네트워크 통신
22.1. 자바 기반 전통적 HTTP 통신
22.2. 외부 라이브러리를 활용한 편리한 통신
22.2.1. OkHttp 라이브러리 사용 준비
따라 해 보세요 _ 네트워크 통신 해보기(OkHttp 라이브러리 활용)
22.2.2. OkHttp 라이브러리 적용
22.3. JSON 파싱
22.3.1. JSON 데이터 파싱의 기본
22.3.2. JSON 데이터 주무르기
22.4. 실제 날씨 데이터 이용하기 : 웹 API 활용
22.4.1. 요청 방식
22.4.2. 응답
22.4.3. 인증
22.4.4. 실제 날씨 데이터를 얻는 방법
23장 _ 서비스 컴포넌트
23.1. 서비스가 필요한 이유
따라 해 보세요 _ 앱 종료 후 멈출 수 없는 스레드 예
23.2. 서비스 사용하기
23.2.1. 스타트 서비스
따라 해 보세요 _ 서비스 컴포넌트 예제
23.2.2. 인텐트 서비스
23.2.3. 죽지 않는 서비스
23.3. 바인드 서비스
23.3.1. 바인드 서비스 작성
23.3.2. ServiceConnection 객체 정의
23.3.3. 바인딩 상태 확인
23.3.4. 바인드 서비스의 기능 사용
23.4. 서비스의 생명주기
24장 _ 알림과 알람 매니저
24.1. 알림 띄우기
24.1.1. 알림 디자인 변천사
24.1.2. 알림의 구성요소
24.1.3. 알림 생성 방법
따라 해 보세요 _ 알림 띄우기
24.1.4. 안드로이드 오레오에서 달라진 점
24.2. 알람 매니저(AlarmManager)
24.2.1. 알람 매니저 특징
24.2.2. 알람 매니저 실습 : 타임 피커 활용
따라 해 보세요 _ 지정된 시간 후 앱 실행
25장 _ 지도를 이용해보자
25.1. 안드로이드 앱에 지도 추가
따라 해 보세요 _ 지도 표시하기
25.1.1. 구글 지도 API 키 발급받기
25.1.2. 구글 맵 액티비티 템플릿 코드 살펴보기
25.1.3. 마커의 타이틀 클릭 이벤트
25.2. 실행 중(Runtime) 권한 체크
25.2.1. 권한 승인 단계의 변화
25.2.2. 권한 확인, 요청, 응답 처리
25.2.3. 현재 위치 정보 얻기
25.2.4. 런타임 권한 체크 구현
25.2.5. 디버그 키와 릴리즈 키
26장 _ 이벤트 처리와 분위기 변신
26.1. 공통 이벤트
따라 해 보세요 _ 다양한 이벤트 처리 예
26.1.1. 레이아웃 코드 작성
26.1.2. 액티비티 코드 작성
26.1.3. 클릭 이벤트
26.1.4. 포커스 이동 이벤트
26.1.5. 키 이벤트
26.1.6. 터치 이벤트
26.2. 이벤트 처리를 위한 4가지 구현 패턴
26.2.1. onClick 속성 이용
26.2.2. setOn ~ Listener 메서드에 이벤트 리스너 구현
26.2.3. 액티비티에서 이벤트 구현
26.2.4. 이벤트 리스너 구현 후 각 뷰의 리스너로 설정
26.3. 분위기 변신
26.3.1. 테마 변경
26.3.2. 나만의 토스트 만들기
따라 해 보세요 _ 나만의 스타일로 토스트 만들기
27장 _ 툴바 사용하기
27.1. 툴바(ToolBar)
따라 해 보세요 _ 툴바 사용하기
27.2. 툴바 꾸미기
27.3. 툴바에 검색 창(SearchView) 넣기
28장 _ 리사이클러뷰
28.1. 리사이클러뷰 소개
28.2. 리사이클러뷰 + 카드뷰 사용하기
따라 해 보세요 _ 리사이클러뷰 + 카드뷰 사용하기
28.3. 클릭 이벤트 처리
28.4. 애니메이션 618
29장 _ 머티리얼 디자인
29.1. 아래로 당겨서 로딩하기
29.1.1. SwipeRefreshLayout 구현
따라 해 보세요 _ 아래로 당겨서 로딩하기
29.1.2. 로딩 상태 종료를 위한 리스너 구현
29.2. 내비게이션 드로어 메뉴
따라 해 보세요 _ 옆에서 나타나는 메뉴 만들기
29.2.1. Navigation Drawer Activity 레이아웃 분석
29.2.2. 메뉴의 이벤트 처리
29.3. 플로팅 액션 버튼
29.4. 스낵바
29.5. 코디네이터 레이아웃
29.5.1. 스크롤링 액티비티 살펴보기
29.5.2. ScrollingActivity 레이아웃 분석
29.5.3. 많이 사용하는 패턴
29.5.4. CoordinatorLayout과 Behavior
30장 _ 단위 테스트와 생산성을 높이는 라이브러리
30.1. 단위(Unit) 테스트
30.1.1. 계산기 클래스 작성하기
30.1.2. 테스트 수행해 보기
30.2. 생산성을 높이는 라이브러리
30.2.1. 메모리 누수를 검출하는 LeakCanary
30.2.2. 로컬 DB를 쉽게 확인하는 Stetho
30.2.3. 이벤트 전달을 쉽게 하는 EventBus
30.2.4. 부드러운 이미지 로딩 Glide
30.2.5. JSON 처리는 Gson
30.2.6. 비동기 네트워크 통신 OkHttp
30.2.7. OkHttp와 Gson 조합은 Retrofit
30.2.8. 둥근 이미지 뷰 CircleImageView
30.2.9. 모바일용 데이터베이스 Realm
따라 해 보세요 _ Realm을 이용한 회원가입 기능 구현
31장 _ 파이어베이스(Firebase)
31.1. 파이어베이스란?
31.1.1. 개발자 콘솔
31.1.2. 안드로이드 프로젝트에 파이어베이스 사용 조건
31.2. 앱 분석(Analytics)
31.3. 인증(Authentication)
31.3.1. 앱에 파이어베이스 인증 추가
31.3.2. 인증 처리
31.4. 실시간 데이터베이스(Realtime Database)
31.4.1. 앱에 파이어베이스 데이터베이스 추가
31.4.2. DatabaseReference 가져오기
31.4.3. 데이터베이스에 쓰기
31.5. 저장소(Storage)
31.5.1. 저장소 사용 준비
31.5.2. 파일 업로드
31.6. 알림(FCM)
31.6.1. 콘솔에서 메시지 전송
31.6.2. 알림 수신 및 처리
31.7. 원격 구성(Remote Config)
31.7.1. 원격 구성의 기본 설정
31.7.2. 원격 구성 값 가져오기
31.8. 기타 서비스들
32장 _ 채팅 앱 만들기: 파이어베이스 활용
32.1. 프로젝트 생성하기
32.2. 레이아웃 작성하기
32.3. 모델 클래스 작성하기
32.4. 뷰홀더 클래스 작성하기
32.5. 파이어베이스 연결하기
32.6. 실시간 데이터베이스 사용하기
32.6.1. 메시지 전송하기
32.6.2. 메시지 읽어오기
32.7. 푸시 알림 보내기 : FCM 활용
32.8. 원격 구성으로 메시지 길이 제한 적용하기
32.9. 앱 초대하기
32.10. 분석하기
32.11. 버그 리포팅 받기
33장 _ 미세먼지 정보 앱 만들기
33.1. 어떤 앱을 만들 것인가?
33.2. 프로젝트 구성 및 설계
33.3. 레이아웃
33.4. 미세먼지 APP 키 발급 받기
33.5. Retrofit으로 미세먼지 정보 가져오기
33.5.1. 모델 클래스 작성
33.5.2. Retrofit 사용 준비
33.5.3. 데이터 제공을 추상화하기
33.5.4. 프래그먼트 작성하기
33.6. 현재 위치 가져오기
33.7. 지역 추가 다이얼로그 작성
33.8. 지역명을 위도 경도로 변환하기
33.9. 액티비티에서 코드 마무리하기
33.10. Realm 데이터베이스 적용
33.10.1. Realm 사용 준비
33.10.2. 저장과 로드 구현하기
33.11. 내비게이션 드로어
부록