장바구니 담기 close

장바구니에 상품을 담았습니다.

깡샘의 안드로이드 프로그래밍

깡샘의 안드로이드 프로그래밍

  • 강성윤
  • |
  • 루비페이퍼
  • |
  • 2017-10-10 출간
  • |
  • 1112페이지
  • |
  • 189 X 258 X 48 mm /2315g
  • |
  • ISBN 9791186710210
판매가

43,000원

즉시할인가

38,700

카드할인

0원(즉시할인 0%)

적립금

2,150원 적립(5%적립)

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

추가혜택

네이버페이 무조건 1%적립+ 추가 1%적립

수량
+ -
총주문금액
38,700

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




"이 책은 개념 설명도 잘 돼 있고 구성도 좋아서 저처럼 안드로이드를 처음 접하는 사람에게 좋은 거 같습니다. 그런데 저는 이 책의 최대 강점을 실습으로 꼽고 싶습니다. 실습에서는 핸드폰에서 자주 사용하던 앱에서 줄기차게 봐았던 기능들을 직접 구현해보는데요. 예를 들어, 카카오택시에서처럼 지도를 보여주고 현재 위치를 중심으로 지도를 옮기거나 내 위치에 마커를 표시하는 등의 기능을 구현해봅니다. 놀라운 건 이런 게 무려 95개나 된다는 사실이죠. @@

그런데 한 가지 걱정이 있습니다. 아무리 재밌는 실습이 많다고 해도 초보인 제가 쉽게 따라 할 수 있을까 하는 걱정이요. 책에 단계별로 그림과 함께 잘 나와 있어서 초반에는 어려움이 없었는데, 중반부터는 슬슬 어렵더라고요. 일단 안드로이드 스튜디오 사용법도 익숙하지 않은 데다, 소스 파일와 리소스 파일, 라이브러리 등이 복잡하게 얽혀있으니까요.

그때 스쳤던 게 동영상 강의 QR 코드였어요. 그동안 귀찮아서 넘겼던 동영상 강의를 틀어보았습니다. 헐~ 대박! 안드로이드 스튜디오에서 무엇을 어떤 순서로 누르고, 코딩하고, 돌리고 등등... 95개 실습 전부를 자세하게 설명해주더라고요. 코드를 완벽하게 이해하는 건 둘째 치고, 일단 프로젝트를 따라서 실행해볼 수 있다는 것에 만족감이 컸습니다. 그리고 중간중간 왜 그렇게 해야 하는지, 초보자가 실수하기 쉬운 부분, 버전에 따른 변경 사항 등도 해설해주는데, 책으로 배운 내용을 한번 더 복습하니까 뇌에 콕콕 박히는 거 같았습니다(근데 선생님 목소리가 쪼~금 작아요 볼륨을 높여야 해요).

솔직히 저는 한 번 정독해서 읽었지만, 아직 이 책에 나오는 모든 개념과 소스를 다 이해한 건 아니에요. 그렇지만 "컴포넌트"와 "인텐트" 두 마리 토끼는 확실히 잡은 거 같아서 큰 도움이 됐습니다. 앞으로 한 번 더 읽을 생각이고 또 다른 책들도 봐야겠지만, 이 책이 첫 책이었다는 게 다행이다 싶어요. 처음에는 빈 화면에 버튼 몇 개 넣고 핸드폰에서 눌러만 봐도 마냥 신기했는데, 이제 나만의 멋진 앱을 만들어볼 수 있다는 희망이 생겼습니다. 행운을 빌어요. (? `?∀?)??"
우연히 먼저 보게 된 「몽테크리스토」님 서평 중

"안드로이드 명품 강의를 책으로 만날 수 있게 되었다."
멀티캠퍼스 전임교수 「최호성」님 추천사 중

"드디어, 배울 때와 써먹을 때가 다르지 않은 책이 나왔다."
삼성SDS 과장이자, 제자인 「엄태형」님 추천사 중

※ 실습 공유 파일 및 책 예제
- http://kkangsnote.tistory.com/
- https://github.com/kkangseongyun/kkangs_android


목차


Part 01 안드로이드 시작하기
01 _ 개발환경을 구축하자!
1.1. 안드로이드 스튜디오 개발환경 구축
1.1.1. 자바 설치
1.1.2. 안드로이드 스튜디오 설치
1.1.3. 안드로이드 스튜디오 설정
1.2. 첫 번째 앱 만들고 실행하기
1.2.1. 프로젝트 생성
1.2.2. AVD 매니저
1.2.3. AVD에서 실행
1.2.4. 스마트폰에서 실행
1.2.5. 개발 편의를 위한 설정
1.3. 앱 배포
1.3.1. APK 파일 추출
1.3.2. APK 파일 배포

02 _ 안드로이드 프로젝트 이해
2.1. 안드로이드 앱 개발 특징
2.1.1. 안드로이드의 특징
2.1.2. 안드로이드 플랫폼 아키텍처
2.1.3. 컴포넌트 기반 개발
2.1.4. 리소스를 이용한 개발
2.2. 개발 디렉터리와 파일 구조
2.2.1. 앱의 디렉터리와 파일
2.2.2. R.java의 이해
2.3. 그레이들(gradle) 파일
2.3.1. settings.gradle
2.3.2. 프로젝트 수준의 그레이들
2.3.3. 모듈 수준의 그레이들
2.4. Hello World 앱 코드 분석
2.4.1. AndroidManifest.xml
2.4.2. MainActivity.java
2.4.3. activity_main.xml
2.5. 안드로이드 버전

Part 02 기본 앱을 만들어보자
03 _ 사용자 인터페이스
3.1. UI의 기본 구조
3.1.1. 액티비티-뷰 구조
3.1.2. UI 프로그램 작성 방법 : 자바 코드 VS 레이아웃 XML
3.1.3. 뷰의 기초 속성
3.2. 뷰 아키텍처
3.2.1. 뷰의 계층구조
3.2.2. 뷰 계층구조 구현
3.3. 기초 뷰 활용
3.3.1. TextView
3.3.2. ImageView
3.3.3. EditText
3.3.4. Button
3.3.5. Checkbox, RadioButton

04 _ 레이아웃을 활용한 다양한 뷰 배치
4.1. LinearLayout
4.1.1. LinearLayout 소개
4.1.2. 레이아웃 중첩
4.1.3. LinearLayout 속성
4.2. RelativeLayout
4.2.1. RelativeLayout 소개
4.2.2. align 속성
4.2.3. alignParentXXX 속성
4.3. FrameLayout
4.3.1. FrameLayout 소개
4.3.2. 탭 화면 구현 : TabHost
4.4. TableLayout
4.5. GridLayout
4.5.1. GridLayout 소개
4.5.2. GridLayout 속성
4.6. ConstraintLayout
4.6.1. 상대적 위치 지정
4.6.2. 여백(margin)
4.6.3. 가운데 맞춤과 치우침(bias)
4.6.4. 비율(Ratio)

05 _ 다양한 사용자 알림 효과
5.1. 진동과 소리
5.1.1. 진동 울리기
5.1.2. 소리 울리기
5.2. 다이얼로그
5.2.1. 토스트(Toast)
5.2.2. 알림 창(AlertDialog)
5.2.3. 목록(AlertDialog)
5.2.4. 프로그레스 다이얼로그(ProgressDialog)
5.2.5. 날짜 선택(DatePickerDialog)
5.2.6. 시간 선택(TimePickerDialog)
5.2.7. 커스텀 다이얼로그(AlertDialog)

06 _ 사용자 이벤트 처리
6.1. 델리게이션 이벤트 모델
6.1.1. 이벤트 프로그램 구조
6.1.2. 다양한 이벤트 처리
6.2. 하이어라키 이벤트 모델
6.2.1. 터치 이벤트
6.2.2. 키 이벤트

07 _ 리소스 활용 및 스마트폰 크기 호환성
7.1. 안드로이드 리소스
7.1.1. 리소스 종류
7.1.2. 다양한 리소스 활용
7.2. 스마트폰 크기 호환성
7.2.1. 리소스 폴더명 조건 명시법
7.2.2. DisplayMetrics
7.2.3. 논리적 단위로 스마트폰 크기 호환성 확보
도전 과제
Mission 1: 페이스북의 메신저 인트로 화면 구성
Mission 2: 브런치 앱의 새 글 작성 화면 및 앱 종료 다이얼로그 띄위기
Mission 3: 주소록 앱의 새 연락처 화면 구성

Part 03 앱의 데이터를 영속화하자
08 _ DBMS을 이용한 데이터 영속화
8.1. SQLite을 이용한 영속화
8.1.1. SQLiteDatabase 클래스
8.1.2. SQLiteOpenHelper 클래스
8.1.3. insert( ), query( ), update( ), delete( ) 함수 이용
8.2. Realm을 이용한 데이터 영속화
8.2.1. Realm 소개
8.2.2. Realm 사용 설정
8.2.3. Realm 사용

09 _ 파일 및 SharedPreferences을 이용한 데이터 영속화
9.1. 퍼미션
9.1.1. 퍼미션이란?
9.1.2. 안드로이드 6.0 (API Level 23) 변경사항
9.2. 파일에 읽고 쓰기
9.2.1. 외부 저장 공간 이용
9.2.2. 내부 저장 공간 이용
9.3. SharedPreferences와 앱 설정 자동화
9.3.1. SharedPreferences
9.3.2. 앱 설정 자동화
9.3.3. 앱 설정 자동화 적용
도전 과제
Mission 1: 주소록 앱의 새로운 연락처 등록 화면 기능 구현
Mission 2: 스마트폰의 환경설정 화면 및 설정 데이터 저장

Part 04 다양한 화면을 구성하자
10 _ AdapterView 활용
10.1. Adapter와 AdapterView
10.1.1. AdapterView의 구조
10.1.2. 라이브러리의 Adapter
10.2. 커스텀 Adapter
10.2.1. 커스텀 Adapter가 필요한 예
10.2.2. 커스텀 Adapter 작성 방법
10.2.3. 커스텀 Adapter 추가 고려 사항

11 _ 다양한 뷰 활용
11.1. Spannable
11.1.1. Spannable의 필요성
11.1.2. Spannable 적용
11.1.3. fromHtml( ) 함수로 적용
11.2. WebView
11.2.1. WebView 활용
11.2.2. 자바스크립트와 자바 연동
11.2.3. 이벤트 처리
11.3. 기타 유용한 뷰
11.3.1. 콤보박스 : Spinner
11.3.2. 텍스트 자동완성 : AutoCompleteTextView
11.3.3. 프로그레스바 : ProgressBar
11.3.4. 값을 입력받는 프로그레스바 : SeekBar

12 _ ActionBar와 메뉴
12.1. ActionBar
12.1.1. ActionBar 구성
12.1.2. 표시 옵션
12.2. 안드로이드 API Level과 하위 호환성
12.3. 메뉴
12.3.1. 메뉴 작성 방법
12.3.2. MenuInflater 활용
12.3.3. 메뉴 다양하게 이용하기

13 _ 커스텀 뷰 개발
13.1. 커스텀 뷰 작성 방법
13.2. 그래픽 프로그램
13.2.1. 뷰를 그리는 방법
13.2.2. Paint 클래스
13.2.3. 코드에서 논리적 크기 획득
도전 과제
Mission 1: 전화 앱의 로그 화면 구현
Mission 2: 피트니스 앱의 활동 로그 도넛 작성
Mission 3: 검색 추천단어 화면 구성

14 _ 인텐트와 구글 기본 앱 연동
14.1. 인텐트
14.1.1. 인텐트의 기본 개념
14.1.2. 명시적 인텐트, 암시적 인텐트
14.1.3. 인텐트 필터(Intent Filter)
14.1.4. Extra 데이터
14.1.5. 결과 되돌리기
14.2. 구글 기본 앱 연동
14.2.1. 주소록 앱
14.2.2. 카메라 앱
14.2.3. 갤러리 앱
14.2.4. 음성인식 앱
14.2.5. 기타 앱 연동

15 _ 액티비티 생명주기 및 다양한 제어
15.1. 액티비티 생명주기
15.1.1. 생명주기
15.1.2. 액티비티 상태 저장
15.2. 태스크 관리
15.2.1. 시스템의 태스크 관리
15.2.2. 태스크 제어 방법 1 : launchMode 속성 설정
15.2.3. 태스크 제어 방법 2 : Intent 플래그 이용
15.3. 액티비티를 위한 다양한 설정
15.3.1. 키보드 제어
15.3.2. 다중 창 지원
15.3.3. Picture In Picture(Android Oreo 추가사항)
15.3.4. 기타 설정

16 _ 스레드와 핸들러
16.1. ANR과 스레드-핸들러
16.1.1. 액티비티 ANR
16.1.2. ANR 문제 해결방법
16.1.3. 핸들러
16.2. AsyncTask와 Looper
16.2.1. AyncTask
16.2.2. Looper
도전 과제
Mission 1: 카메라 앱 연동
Mission 2: 구글 기본 앱 연동

Part 06 상용 앱 수준의 화면을 구성하자
17 _ Support 라이브러리 활용
17.1. Fragment
17.1.1. Fragment 이해
17.1.2. Fragment 작성법
17.1.3. Fragment 생명주기
17.1.4. 다양한 Fragment
17.2. ViewPager
17.3. RecyclerView
17.3.1. RecyclerView 소개
17.3.2. Adapter, ViewHolder
17.3.3. LayoutManager
17.3.4. ItemDecoration

18 _ 머티리얼 디자인
18.1. NavigationDrawer, NavigationView
18.1.1. NavigationDrawer
18.1.2. NavigationView
18.2. Snackbar, FloatingActionButton, TabLayout
18.2.1. Snackbar
18.2.2. FloatingActionButton
18.2.3. TabLayout
18.3. Toolbar, AppBarLayout, CoordinationLayout
18.3.1. Toolbar
18.3.2. AppBarLayout
18.3.3. CoordinatorLayout
18.4. Bottom Sheet
18.4.1. persistent bottom sheet
18.4.2. modal bottom sheet
도전 과제
Mission 1: AppBar, CoordinatorLayout
Mission 2: NavigationDrawer, NavigationView
Mission 3: RecyclerView

Part 07 컴포넌트를 제대로 이해하고 개발하자
19 _ 브로드캐스트 리시버와 알림
19.1. 브로드캐스트 리시버
19.1.1. 브로드캐스트 리시버 이해
19.1.2. 브로드캐스트 리시버 작성 방법
19.1.3. 시스템 브로드캐스트 인텐트
19.1.4. 백그라운드 서비스 제한 (Android Oreo 변경사항)
19.2. 알림
19.2.1. 알림의 기본 구성
19.2.2. NotificationChannel(Android Oreo 추가사항)
19.2.3. 기본적인 알림 구성
19.2.4. 알림의 다양한 구성

20 _ 서비스 컴포넌트
20.1. 서비스 기본 개념
20.1.1. 서비스 작성 방법
20.1.2. 서비스 생명주기
20.1.3. 데이터 공유
20.2. AIDL의 이해
20.2.1. AIDL 프로그램 구조
20.2.2. AIDL 작성 방법
20.3. 인텐트 서비스(IntentService)
20.4. 시스템 서비스(SystemService)
20.4.1. ActivityManager
20.4.2. PackageManager
20.4.3. AlarmManager
20.5. 백그라운드 서비스 제한

21 _ 콘텐츠 프로바이더
21.1. 콘텐츠 프로바이더 이해
21.1.1. 콘텐츠 프로바이더 구조
21.1.2. 콘텐츠 프로바이더 작성법
21.1.3. 콘텐츠 프로바이더 이용
21.2. 구글 기본 앱의 콘텐츠 프로바이더 이용
21.2.1. 주소록 앱 데이터 획득
21.2.2. 갤러리 앱 데이터 획득
도전 과제
Mission 1: 알람 앱
Mission 2: 블로그 앱 에디터

Part 08 위치 기반 서비스를 제공하자
22 _ 위치 정보 획득
22.1. LocationManager 이용
22.1.1. 위치 정보 제공자
22.1.2. 위치 정보 획득
22.2. Fused Location API 이용

23 _ 지도 활용
23.1. 지도 출력
23.1.1. 구글 지도를 위한 설정
23.1.2. 구글 지도 화면 출력
23.2. 구글 지도 제어
23.2.1. 지도 중심 위치 이동
23.2.2. GoogleMap 이벤트 처리
23.2.3. 현재 위치 표시
23.2.4. 주소와 위경도 변환
도전 과제
Mission 1: 카카오택시의 출발 위치 조정
Mission 2: 구글 지도 앱 화면

Part 09 서버 데이터를 활용하자
24 _ 네트워크 정보 활용
24.1. 다양한 네트워크 정보 활용
24.1.1. TelephonyManager
24.1.2. ConnectivityManager
24.1.3. WifiManager
24.2. XML, JSON 데이터 파싱
24.2.1. XML 파싱
24.2.2. JSON 파싱

25 _ HTTP 통신
25.1. Java API를 이용한 HTTP 통신
25.2. Volley API를 이용한 HTTP 통신
25.3. Glide를 활용한 HTTP 통신

26 _ 실시간 서버 푸시
26.1. 소켓 프로그램
26.1.1. 소켓 프로그램 작성 방법
26.1.2. 소켓 프로그램 작성 시 주의점
26.2. Firebase 클라우드 메시지
도전 과제
Mission 1: HTTP 통신을 통한 날씨 정보 제공

Part 10 다양한 기능을 제공하자
27 _ 스마트폰 기능 활용
27.1. SMS 송수신
27.1.1. SMS 송신
27.1.2. SMS 수신
27.2. 센서 다루기
27.2.1. 근접 센서 다루기
27.2.2. 가속도 센서 다루기
27.3. 블루투스
27.3.1. 블루투스 제어
27.3.2. 블루투스 통신

28 _ 카메라 활용
28.1. SurfaceView vs TextureView
28.1.1. SurfaceView
28.1.2. TextureView
28.2. Camera API
28.3. Camera2 API
28.3.1. Camera2 API 구조
28.3.2. Camera2 API 활용

29 _ 앱 위젯 개발
29.1. 앱 위젯 기본 구조
29.1.1. 앱 위젯 개념
29.1.2. 앱 위젯 개발
29.2. Collection 앱 위젯 개발
29.2.1. Collection 앱 위젯 구조
29.2.2. Collection 앱 위젯 개발

30 _ 멀티미디어 활용
30.1. 오디오, 비디오 재생
30.1.1. 오디오 재생
30.1.2. 비디오 재생
30.2. 음성, 영상 녹화
30.2.1. 음성 녹음
30.2.2. 영상 녹화
도전 과제
Mission 1: 카메라 앱 구현
Mission 2: 날씨 정보 앱 위젯 구현

Part 11 코틀린으로 안드로이드 앱을 개발하자!
31 _ 안드로이드 스튜디오에서 코틀린으로 개발하기
31.1. 코틀린 소개
31.2. 안드로이드 스튜디오 3에서 코틀린 개발환경
31.2.1. 안드로이드 스튜디오 2.x
31.2.2. 안드로이드 스튜디오 3
31.2.3. 코틀린 클래스 추가
31.2.4. 자바 코드를 코틀린 코드로 변환
31.3. 간단한 코드 분석으로 코틀린 이해하기

32 _ 코틀린 기초 작성법
32.1. 코틀린 파일 작성 규칙
32.1.1. 패키지 정의
32.1.2. 파일로 작성
32.2. 기초 타입
32.2.1. Numbers Type
32.2.2. String
32.2.3. Characters, Booleans
32.2.4. Arrays
32.2.5. Any
32.2.6. Nullable과 Null 체크
32.2.7. 타입 체크 : is 연산자
32.3. 변수 및 함수 선언
32.3.1. 변수 선언
32.3.2. 함수 선언
32.4. 실행 흐름 제어
32.4.1. If 표현식
32.4.2. When 표현식
32.4.3. For 반복
32.4.4. While 반복

33 _ 코틀린 OOP 프로그램
33.1. 클래스 정의
33.1.1. 클래스 선언 및 생성
33.1.2. 생성자
33.2. 상속
33.2.1. 상속 관계 명시
33.2.2. 함수 오버라이딩
33.2.3. 변수 오버라이딩
33.3. 추상 클래스와 인터페이스
33.3.1. 추상 클래스
33.3.2. 인터페이스
33.4. 프로퍼티
33.5. 접근 제한자
33.5.1. 패키지 접근 제한
33.5.2. 클래스 접근 제한

34 _ 코틀린으로 만드는 안드로이드 앱

찾아보기

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.