실무에 바로 적용하는 안드로이드 프로그래밍(제4판)

크리스틴 마시캐노 | 제이펍 | 2021년 07월 21일 | PDF

이용가능환경 : Windows/Android/iOS 구매 후, PC, 스마트폰, 태블릿PC에서 파일 용량 제한없이 다운로드 및 열람이 가능합니다.

구매

종이책 정가 36,000원

전자책 정가 25,200원

판매가 25,200원

도서소개

아마존 안드로이드 서적 베스트셀러!
7개의 앱을 직접 따라 만들면서 배우는 실전 안드로이드 프로그래밍!
책 한 권의 과정을 다 마치면 어느새 나도 안드로이드 개발자!

이 책은 빅 너드 랜치(Big Nerd Ranch)에서 널리 활용하는 안드로이드 훈련 캠프 과정의 노하우를 기반으로 집필되었다. 이 책을 통해서 최신 안드로이드의 핵심적인 개념을 배울 수 있고, API에 관한 명쾌한 설명과 더불어 직접 애플리케이션을 작성하면서 안드로이드 프로그래밍의 기초부터 고급 기법까지 배울 수 있다. 또한 이 책은 코틀린을 사용해서 안드로이드 애플리케이션을 개발하는 데 필요한 실제적인 기법을 가르치는 것에 초점을 두었다.
안드로이드 스튜디오를 사용해서 이 책의 여러 애플리케이션을 만들어 가는 과정을 따라서 직접 코드를 작성하고 실행해 보자. 자신의 안드로이드 프로그래밍 능력이 절로 향상되는 것을 느낄 수 있을 것이다. 각 장의 내용 설명과 앱은 안드로이드 애플리케이션 개발을 시작하는 데 필요한 지식과 경험을 제공하기 위해 설계되었으며, 테스트도 모두 완료했다.

저자소개

저 : 크리스틴 마시캐노 (Kristin Marsicano)

빅 너드 랜치의 수석 엔지니어링 매니저인 동시에 안드로이드 개발자이자 강사다. 그녀는 앱 개발과 교육을 접목하는 데 열정을 갖고 있다. 일을 하지 않을 때는 우쿨렐레를 연주하거나 아이들과 함께 레고를 조립한다.

저 : 브라이언 가드너 (Brian Gardner)

빅 너드 랜치의 개발자이자 강사다. 항상 배울 것을 찾아 헤매며 최신 안드로이드 라이브러리를 탐구한다. 조지아텍의 머신러닝 석사 과정에 재학 중이다.

저 : 빌 필립스 (Bill Phillips)

인스타그램의 소프트웨어 엔지니어이자 빅 너드 랜치의 안드로이드 강사였다. 그는 빅 너드 랜치의 안드로이드 교재를 개발하고 가르쳤으며, 이 책의 이전 판 저자이기도 하다. 균형 있는 삶을 추구하며, 일과 음악 작곡 및 오디오 하드웨어 프로젝트 모두를 훌륭히 수행해 내고 있다.

저 : 크리스 스튜어트 (Chris Stewart)

빅 너드 랜치의 공학 기술 부사장이며, 이전에는 안드로이드 강사도 하였다. 그는 자신의 기술적 능력을 완벽하게 만들기 위해 끊임없이 노력하고 일한다. 컴퓨터 앞에 앉지 않을 때는 자전거 하이킹과 여행을 즐긴다.

역 : 심재철

현재 프리랜서로, 데이터베이스/모바일 시스템 컨설팅과 강의를 하고 있다. 또한, 20년 넘게 데이터베이스와 객체지향 시스템 설계 및 개발 프로젝트와 건설/금융 분야 애플리케이션 개발 등에 참여했다. 새로운 테크놀로지와 다양한 프로그래밍 언어를 사용해서 실무에 활용하고 가르치는 것을 좋아한다. 저서로는 『핵심만 골라 배우는 코틀린 프로그래밍』이 있으며, 번역서로는 『카프카 핵심 가이드』, 『핵심만 골라 배우는 안드로이드 스튜디오 3 & 프로그래밍』, 『실무에 적용하는 안드로이드 프로그래밍(제2판)』, 『Learn Android Studio』, 『SQLite 마스터북(제2판)』, 『프로 오브젝티브-C 디자인 패턴』, 『세븐 데이터베이스: 만들면서 파악하는 NoSQL』, 『UML 사용자 지침서』, 『Thinking in JAVA 4/e』, 『이펙티브 자바』 등이 있다.

목차소개

Chapter 1 처음 만드는 안드로이드 애플리케이션
앱 기본사항
안드로이드 프로젝트 생성하기
안드로이드 스튜디오 둘러보기
UI 레이아웃 디자인하기
레이아웃 XML에서 뷰 객체로
위젯을 코드와 연결하기
토스트 만들기
에뮬레이터에서 실행하기
AVD 에뮬레이터 기능 살펴보기
궁금증 해소하기: 안드로이드 앱 빌드 절차
챌린지
챌린지: 토스트 커스터마이징
안드로이드와 모델-뷰-컨트롤러
새로운 클래스 만들기
모델-뷰-컨트롤러와 안드로이드

Chapter 2 안드로이드와 모델-뷰-컨트롤러
새로운 클래스 만들기
모델-뷰-컨트롤러와 안드로이드
뷰 계층 변경하기
컨트롤러 계층 변경하기
아이콘 추가하기
화면 픽셀 밀도
장치에서 실행하기
챌린지: TextView에 리스너 추가하기
챌린지: PREVIOUS 버튼 추가하기
챌린지: Button을 ImageButton으로 변경하기

Chapter 3 액티비티 생명주기
GeoQuiz 화면 회전시키기
액티비티 상태와 생명주기 콜백
액티비티 생명주기 로깅하기
로그 메시지 만들기 / LogCat 사용하기
액티비티 생명주기가 사용자 액션에 어떻게 응답하는지 살펴보기
일시적으로 액티비티 떠나기 / 액티비티 끝내기 / 액티비티 회전시키기
장치 구성 변경과 액티비티 생명주기
가로 방향 레이아웃 생성하기
궁금증 해소하기: UI 변경과 다중 창 모드
궁금증 해소하기: 로그 레벨
챌린지: 정답 맞춘 문제를 건너뛰기
챌린지: 점수 보여주기

Chapter 4 UI 상태 유지하기
ViewModel 의존성 추가하기
ViewModel 추가하기
프로세스 종료 시에 데이터 보존하기
ViewModel vs SIS
궁금증 해소하기: Jetpack, AndroidX, 그리고 아키텍처 컴포넌트
궁금증 해소하기: 섣부른 해결책 피하기

Chapter 5 안드로이드 앱의 디버깅
예외와 스택 기록
안드로이드 특유의 디버깅
챌린지: 프로파일러 살펴보기

Chapter 6 두 번째 액티비티 만들기
두 번째 액티비티 준비하기
액티비티 시작시키기
액티비티 간의 데이터 전달
안드로이드가 액티비티를 어떻게 알까?
챌린지: GeoQuiz 허점 보완하기
챌린지: 문제마다 커닝 여부 관리하기

Chapter 7 안드로이드 SDK 버전과 호환성
안드로이드 SDK 버전
호환성과 안드로이드 프로그래밍
안드로이드 개발자 문서 사용하기
챌린지: 장치의 안드로이드 버전 보여주기
챌린지: 커닝 횟수 제한하기

Chapter 8 UI 프래그먼트와 프래그먼트 매니저
UI 유연성의 필요
프래그먼트 개요
CriminalIntent 앱 개발 시작하기
새로운 프로젝트 생성하기
Crime 데이터 클래스 생성하기
UI 프래그먼트 생성하기
CrimeFragment의 레이아웃 정의하기 / CrimeFragment 클래스 생성하기
UI 프래그먼트의 호스팅
컨테이너 뷰 정의하기 / FragmentManager에 UI 프래그먼트 추가하기
프래그먼트를 사용하는 애플리케이션 아키텍처
프래그먼트 사용 여부 결정하기

Chapter 9 RecyclerView로 리스트 보여주기
새로운 프래그먼트 및 ViewModel 추가하기
프래그먼트에 사용되는 ViewModel 생명주기
RecyclerView 추가하기
항목 뷰 레이아웃 생성하기
ViewHolder 구현하기
어댑터를 구현해 RecyclerView에 데이터 채우기
RecyclerView의 어댑터 설정하기
뷰의 재활용: RecyclerView
리스트 항목의 바인딩 개선하기
리스트 항목 선택에 응답하기
궁금증 해소하기: ListView와 GridView
챌린지: RecyclerView의 ViewType

Chapter 10 레이아웃과 위젯으로 사용자 인터페이스 생성하기
ConstraintLayout 개요
레이아웃 편집기 개요
ConstraintLayout 사용하기
레이아웃 속성을 더 자세히 알아보기
궁금증 해소하기: 마진 vs 패딩
궁금증 해소하기: ConstraintLayout의 다른 기능
챌린지: 날짜 형식 지정하기

Chapter 11 데이터베이스와 Room 라이브러리
Room 아키텍처 컴포넌트 라이브러리
데이터베이스 생성하기
DAO 정의하기
리포지터리 패턴으로 데이터베이스 액세스하기
쿼리 테스트하기
애플리케이션의 스레드
LiveData 사용하기
궁금증 해소하기: 싱글톤

Chapter 12 프래그먼트 간의 이동
단일 액티비티: 프래그먼트의 우두머리
프래그먼트 인자
상세 내역 화면에 보여줄 Crime 객체를 LiveData 변환으로 얻기
데이터베이스 변경하기
궁금증 해소하기: 프래그먼트 인자를 사용하는 이유는
챌린지: 효율적으로 RecyclerView를 다시 로드하기

Chapter 13 대화상자
DialogFragment 생성하기
두 프래그먼트 간의 데이터 전달하기
챌린지: 더 많은 대화상자 만들기

Chapter 14 앱 바
AppCompat의 기본 앱 바
메뉴
안드로이드 애셋 스튜디오 사용하기
궁금증 해소하기: 앱 바 vs 액션 바 vs 툴바
궁금증 해소하기: AppCompat 앱 바 사용하기
챌린지: 텅 빈 뷰를 갖는 RecyclerView

Chapter 15 암시적 인텐트
버튼 추가하기
모델 계층에 용의자 추가하기
포맷 문자열 사용하기
암시적 인텐트 사용하기
챌린지: 또 다른 암시적 인텐트

Chapter 16 인텐트를 사용한 사진 찍기
사진을 위한 장소
파일 스토리지
카메라 인텐트 사용하기
비트맵의 크기 조정과 보여주기
사용하는 장치 기능 선언하기
챌린지: 사진을 확대해서 보여주기
챌린지: 섬네일 이미지 효율적으로 로드하기

Chapter 17 지역화
리소스 지역화하기
구성 수식자
대체 리소스 테스트하기
궁금증 해소하기: 장치 크기 결정하기
챌린지: 날짜를 지역화하기

Chapter 18 접근성
TalkBack
텍스트가 없는 요소를 TalkBack이 읽을 수 있게 만들기
대등한 사용자 경험 만들기
궁금증 해소하기: 접근성 검사기 사용하기
챌린지: 범죄 리스트 접근성 개선하기

Chapter 19 데이터 바인딩과 MVVM
다른 아키텍처가 왜 필요할까?
MVVM 뷰모델 vs Jetpack ViewModel
BeatBox 생성하기
단순 데이터 바인딩 구현하기
애셋 가져오기
애셋 사용하기
애셋 사용 코드 추가하기
데이터 바인딩하기
궁금증 해소하기: 데이터 바인딩 추가로 알아보기
궁금증 해소하기: LiveData와 데이터 바인딩

Chapter 20 단위 테스트와 오디오 재생
SoundPool 생성하기
애셋 사용하기
음원 로드하기
음원 재생하기
테스트 라이브러리 의존성 추가하기
테스트 클래스 생성하기
테스트 설정하기
테스트 작성하기
데이터 바인딩 콜백
음원 내리기
궁금증 해소하기: 통합 테스트
궁금증 해소하기: 모의 객체와 테스트
챌린지: 재생 속도 제어하기
챌린지: 장치 방향 전환 시에도 음원 재생하기

Chapter 21 스타일과 테마
색상 리소스
스타일
테마
앱 테마 색상 변경하기
테마 속성 오버라이드하기
버튼 속성 변경하기
궁금증 해소하기: 테마 속성 사용하기

Chapter 22 XML drawable
균일한 버튼 만들기
형태 drawable
상태 리스트 drawable
레이어 리스트 drawable
궁금증 해소하기: XML drawable을 사용해야 하는 이유
궁금증 해소하기: Mipmap 이미지
궁금증 해소하기: 9-패치 이미지
챌린지: 버튼 테마

Chapter 23 인텐트와 태스크
NerdLauncher 생성하기
암시적 인텐트 해결하기
런타임 시에 명시적 인텐트 생성하기
태스크와 Back 스택
NerdLauncher를 홈 화면으로 사용하기
궁금증 해소하기: 프로세스 vs 태스크
궁금증 해소하기: 동시 문서
챌린지: 앱 아이콘 사용하기

Chapter 24 HTTP와 백그라운드 태스크
PhotoGallery 생성하기
Retrofit을 사용한 네트워킹
플리커에서 JSON 가져오기
구성 변경 시의 네트워크 요청
RecyclerView에 응답 결과 보여주기
궁금증 해소하기: 다른 파서와 데이터 형식
궁금증 해소하기: 요청 취소하기
챌린지: 커스텀 Gson 역직렬화 클래스 구현하기
챌린지: 페이징
챌린지: 열의 개수를 동적으로 조정하기

Chapter 25 Looper, Handler, HandlerThread
이미지를 보여주기 위해 RecyclerView 준비하기
URL로부터 이미지 내려받기 준비하기
내려받기 관련 고려 사항
백그라운드 스레드 만들기
메시지와 메시지 핸들러
뷰 생명주기 리스닝하기
유보 프래그먼트
궁금증 해소하기: 이미지 내려받기 문제 해결하기
궁금증 해소하기: StrictMode
챌린지: 프리로딩과 캐싱

Chapter 26 SearchView와 공유 프리퍼런스
플리커 검색하기
SearchView 사용하기
공유 프리퍼런스를 사용한 간단한 데이터 보존
앱 다듬기
챌린지: 한번 더 다듬기

Chapter 27 WorkManager
Worker 생성하기
작업 스케줄링하기
새로운 사진 확인하기
사용자에게 알림 보여주기
폴링의 사용자 제어 제공하기

Chapter 28 브로드캐스트 인텐트
일반 인텐트 vs 브로드캐스트 인텐트
포그라운드 알림 차단하기
수신자와 오래 실행되는 태스크
궁금증 해소하기: 로컬 이벤트
궁금증 해소하기: 브로드캐스트 수신자의 제약

Chapter 29 웹과 WebView의 브라우징
플리커 데이터에서 하나 더 알아둘 사항
쉬운 방법: 암시적 인텐트
더 어려운 방법: WebView
WebView 사용 시의 장치 회전 처리
궁금증 해소하기: 자바스크립트 객체 주입하기
궁금증 해소하기: WebView 업데이트
궁금증 해소하기: 크롬 커스텀 탭(또 다른 쉬운 방법)
챌린지: 브라우저 검색 기록에 백 버튼 사용하기

Chapter 30 커스텀 뷰와 터치 이벤트
DragAndDraw 프로젝트 설정하기
커스텀 뷰 생성하기
터치 이벤트 처리하기
onDraw(Canvas) 내부에서 렌더링하기
궁금증 해소하기: GestureDetector
챌린지: 상태 정보 저장하기
챌린지: 박스의 방향 회전

Chapter 31 속성 애니메이션
장면 생성하기
간단한 속성 애니메이션
여러 애니메이터를 함께 사용하기
궁금증 해소하기: 다른 애니메이션 API
챌린지

Chapter 32 책을 마무리하며
마지막 챌린지
부담 없는 연락처
감사 인사

회원리뷰 (0)

현재 회원리뷰가 없습니다.

첫 번째 리뷰를 남겨주세요!