목차
지은이의 말 ... 3
일러두기 ... 4
CHAPTER 01 안드로이드
1.1 스마트폰 ... 37
1.1.1. 스마트폰 시대 ... 37
1.1.2. 스마트폰 ... 39
1.1.3. 모바일 운영체제 ... 40
1.2 안드로이드 ... 42
1.2.1. 안드로이드의 등장 ... 42
1.2.2. 특징 ... 44
1.2.3. 아키텍처 ... 45
1.2.4. 4가지 구성 요소 ... 47
1.2.5. 학습 준비 ... 49
1.3 안드로이드의 역사 ... 51
1.3.1. 버전별 기능 ... 51
1.3.2. 허니콤 ... 53
1.3.3. 아이스크림 샌드위치 ... 56
1.3.4. 젤리빈 ... 57
CHAPTER 02 개발툴 설치
2.1 개발툴 설치 ... 65
2.1.1. JDK ... 65
2.1.2. 이클립스 ... 69
2.1.3. 플러그인 ... 76
2.1.4. 안드로이드 SDK ... 80
2.1.5. 통합 설치 ... 86
2.1.6. AVD 생성 ... 87
2.2 설치 고급 ... 95
2.2.1. 옵션 설정 ... 95
2.2.2. 업그레이드 ... 101
2.2.3. 재설치 ... 103
2.2.4. 리눅스에 설치 ... 104
2.2.5. 맥북에 설치 ... 108
CHAPTER 03 첫 번째 예제
3.1 무작정 만들어 보기 ... 115
3.1.1. AndroidFirst ... 115
3.1.2. 실행 설정 ... 121
3.1.3. 실장비에서 실행하기 ... 126
3.1.4. 4.2 버전에서 실습 ... 129
3.2 프로젝트 분석 ... 132
3.2.1. 프로젝트의 구성 ... 132
3.2.2. 레이아웃 파일 ... 137
3.2.3. XML 레이아웃의 장점 ... 141
3.2.4. 에러 처리 ... 144
3.3 실습 준비 ... 146
3.3.1. 에뮬레이터 사용법 ... 146
3.3.2. 프로젝트 관리 ... 151
3.3.3. 샘플 예제 ... 153
3.3.4. 도움말 ... 157
CHAPTER 04 뷰
4.1 뷰와 뷰그룹 ... 161
4.1.1. 뷰의 계층 ... 161
4.1.2. View의 속성 ... 164
4.2 기본 위젯 ... 169
4.1. 텍스트뷰 ... 169
4.2. 이미지뷰 ... 175
4.3. 버튼과 에디트 ... 180
4.3 배포 예제 ... 183
4.3.1. 배포 예제의 설치 ... 183
4.3.2. AndExam ... 185
CHAPTER 05 레이아웃
5.1. 리니어 레이아웃 ... 191
5.1.1. 방향 설정 ... 191
5.1.2. 정렬 지정 ... 195
5.1.3. 베이스 정렬 ... 205
5.1.4. 차일드 영역 분할 ... 207
5.1.5. 마진과 패딩 ... 211
5.2 렐러티브 레이아웃 ... 214
5.2.1. 상대적 배치 ... 214
5.2.2. 명함철 ... 218
5.2.3. 앵커 변경 ... 222
5.3 기타 레이아웃 ... 225
5.3.1. AbsoluteLayout ... 225
5.3.2. FrameLayout ... 228
5.3.3. TableLayout ... 230
CHAPTER 06 레이아웃 관리
6.1 레이아웃 관리 ... 233
6.1.1. 레이아웃 중첩 ... 233
6.1.2. 레이아웃 대체 ... 240
6.1.3. 실행 중에 속성 바꾸기 ... 243
6.1.4. 레이아웃 전개 ... 248
6.2 레이아웃 파라미터 ... 259
6.2.1. 레이아웃 파라미터 ... 259
6.2.2. 레이아웃 파라미터 변경 ... 268
6.3 그리드 레이아웃 ... 271
6.3.1. 그리드의 속성 ... 272
6.3.2. 그리드의 방향 ... 273
6.3.3. 셀의 크기 ... 279
6.3.4. 셀 좌표 ... 282
6.3.5. 셀 병합 ... 285
6.3.6. 그리드의 활용 ... 287
CHAPTER 07 출력
7.1 캔버스 ... 291
7.1.1. 커스텀 뷰 ... 291
7.1.2. Canvas ... 294
7.1.3. Paint ... 299
7.1.4. Paint 객체 관리 ... 305
7.2 그리기 객체 ... 308
7.3.1. Bitmap ... 308
7.3.2. 텍스트 ... 313
7.3.3. Path ... 319
7.3 셰이더 ... 322
7.3.1. 직선 그래디언트 ... 322
7.3.2. 원형 그래디언트 ... 325
7.3.3. 비트맵 셰이더 ... 328
7.3.4. ShapeDrawable ... 332
7.4 그 외의 출력 ... 338
7.4.1. 토스트 ... 338
7.4.2. 비프음 ... 344
7.4.3. 진동 ... 347
7.4.4. 퍼미션 ... 350
CHAPTER 08 이벤트
8.1 이벤트 핸들러 ... 355
8.1.1. 이벤트 처리 ... 355
8.1.2. 핸들러의 우선순위 ... 368
8.1.3. 외부 변수 액세스 ... 371
8.2 여러 가지 이벤트 ... 377
8.2.1. 터치 입력 ... 377
8.2.2. 키보드 입력 ... 380
8.2.3. 위젯의 이벤트 처리 ... 385
8.2.4. 롱 클릭 ... 392
8.2.5. 포커스 관리 ... 395
8.2.6. 타이머 ... 400
CHAPTER 09 메뉴
9.1 메뉴 ... 405
9.1.1. 옵션 메뉴 ... 405
9.1.2. XML로 메뉴 정의하기 ... 411
9.1.3. 컨텍스트 메뉴 ... 416
9.1.4. PopupMenu ... 422
9.2 메뉴의 법칙 ... 426
9.2.1. 메뉴 변천사 ... 426
9.2.2. 메뉴 편집 ... 433
9.2.3. 메뉴 교체 ... 438
CHAPTER 10 개발 환경
10.1. 실습 예제 ... 443
10.1.1. 기억력 게임 ... 443
10.1.2. 분석 ... 449
10.1.3. 개작 ... 453
10.1.4. NumPang ... 457
10.2 개발툴 ... 473
10.2.1. 이클립스 ... 473
10.2.2. 디버깅 ... 477
10.2.3. DDMS ... 482
10.2.4. 로그 ... 485
10.2.5. adb ... 490
CHAPTER 11 기본 위젯
11.1 리소스 ... 495
11.1.1. 리소스 ... 495
11.1.2. 리소스 사용 ... 498
11.1.3. 스타일 ... 503
11.1.4. 테마 ... 507
11.2 텍스트 뷰 ... 509
11.2.1. 기본 속성 ... 509
11.2.2. bufferType ... 517
11.2.3. 문자열 변경 리스너 ... 529
11.2.4. 커서 및 선택 관리 ... 537
11.2.5. 키보드 관리 ... 541
11.3 버튼 ... 549
11.3.1. 나인 패치 ... 549
11.3.2. 화살표 버튼 ... 556
11.3.3. 라디오 버튼 ... 563
11.3.4. 터치 필터링 ... 569
11.4 이미지뷰 ... 573
11.4.1. 확대 모드 ... 573
11.4.2. 이미지 버튼 ... 580
CHAPTER 12 어댑터 뷰
12.1 리스트뷰 ... 587
12.1.1. 어댑터뷰 ... 587
12.1.2. 리스트뷰 ... 590
12.1.3. 항목 선택 ... 596
12.1.4. 항목 편집 ... 598
12.2 항목 뷰 ... 605
12.2.1. 커스텀 항목 뷰 ... 605
12.2.2. 여러 종류의 항목 뷰 ... 612
12.2.3. 대용량 항목 표시 ... 618
12.2.4. 확장 리스트뷰 ... 623
12.2.5. ListActivity ... 626
12.2.6. 오버 스크롤 ... 629
12.3 어댑터 뷰 ... 632
12.3.1. 스피너 ... 632
12.3.2. 그리드 ... 637
12.3.3. 갤러리 ... 640
CHAPTER 13 고급 위젯
13.1 프로그래스바 ... 643
13.1.1. 프로그래스바 ... 643
13.1.2. 시크바 ... 650
13.1.3. 래이팅바 ... 652
13.2 날짜와 시간 ... 655
13.2.1. 날짜 시간 ... 655
13.2.2. 시계 위젯 ... 662
13.2.3. 날짜, 시간 입력기 ... 663
13.2.4. Chronometer ... 672
13.3 기타 위젯 ... 679
13.3.1. 자동 완성 ... 679
13.3.2. SlidingDrawer ... 683
13.3.3. ScrollView ... 687
13.3.4. WebView ... 692
13.3.5. 스포츠 경기 점수판 ... 698
13.4 추가 위젯 ... 707
13.4.1. 스위치 ... 707
13.4.2. Space ... 710
13.4.3. NumberPicker ... 712
13.4.4. CalendarView ... 717
13.4.5. ListPopupWindow ... 719
CHAPTER 14 커스텀 위젯
14.1 기존 위젯 변형 ... 723
14.1.1. 위젯 수정 ... 723
14.1.2. 위젯 조합 ... 727
14.1.3. 커스텀 속성 ... 731
14.1.4. 사운드 속성 ... 735
14.2 새로운 위젯 ... 740
14.2.1. 크기 정하기 ... 740
14.2.5. 무지개 프로그래스 ... 753
CHAPTER 15 리소스 관리
15.1 대체 리소스 ... 759
15.1.1. 리소스 폴더 ... 759
15.1.2. 화면 방향 ... 761
15.1.3. 다국어 지원 ... 765
15.2 화면 다양성 ... 771
15.2.1. 화면의 종류 ... 771
15.2.2. 논리 단위 ... 777
15.2.3. 이미지 리소스 ... 783
15.2.4. 레이아웃 활용 ... 792
15.2.5. 논리 단위 구하기 ... 795
15.3 화면 크기 ... 805
15.3.1. 화면 크기 ... 805
15.3.2. 화면 최소폭 ... 807
15.3.3. 화면 호환성 ... 816
CHAPTER 16 대화상자
16.1 AlertDialog ... 823
16.1.1. 대화상자 생성 ... 823
16.1.2. 대화상자 닫기 ... 828
16.1.3. 대화상자의 버튼 ... 831
16.1.4. 대화상자 미리 생성 ... 834
16.2 대화상자 활용 ... 838
16.2.1. 알림 메시지 전달 ... 838
16.2.2. 질문하기 ... 842
16.2.3. 목록 선택 ... 849
16.3 대화상자 고급 ... 856
16.3.1. 커스텀 대화상자 ... 856
16.3.2. 팝업 윈도우 ... 859
CHAPTER 17 액티비티
17.1 액티비티 ... 867
17.1.1. 액티비티 추가 ... 867
17.1.2. 인텐트 ... 872
17.1.3. 액티비티간의 통신 ... 876
17.1.4. 암시적 인텐트 ... 882
17.2 생명 주기 ... 890
17.2.1. 액티비티의 일생 ... 890
17.2.2. 상태 저장 ... 895
17.2.3. 객체 저장 ... 902
17.3 복잡한 액티비티 ... 910
17.3.1. 탭 ... 910
17.3.2. 페이지 겹치기 ... 918
CHAPTER 18 프로세스
18.1 프로세스 ... 923
18.1.1. 태스크 ... 923
18.1.2. 론치 모드 ... 929
18.1.3. 인텐트의 플래그 ... 935
18.1.4. Application ... 937
18.2 Window ... 943
18.2.1. 타이틀 바 ... 943
18.2.2. 레이아웃 채우기 ... 946
18.2.3. 윈도우 관리자 ... 951
18.2.4. 드래그하여 항목 순서 변경 ... 954
18.3 패키지 관리 ... 954
18.3.1. 외부 메모리에 앱 설치 ... 965
18.3.2. 백업 및 복구 ... 970
CHAPTER 19 스레드
19.1 스레드 ... 973
19.1.1. 스레드 ... 973
19.1.2. 핸들러 ... 978
19.1.3. 루퍼 ... 989
19.1.4. 작업 스케줄링 ... 996
19.2 스레드의 활용 ... 1004
19.2.1. ANR ... 1004
19.2.2. StrictMode ... 1009
19.2.3. LongTime ... 1013
19.2.4. AsyncTask ... 1021
19.2.5. BackWork ... 1025
닫기