목차
Intro : 시작을 위한 준비
   1. 어플리케이션 개발을 위해 준비할 것들 ... 22
      운영체제 ... 22
      JDK와 SDK ... 22
      이클립스(eclipse)와 ADT ... 24
   2. 첫 번째 안드로이드 어플리케이션 ... 27
      프로젝트 만들기 ... 27
      프로젝트 빌드와 실행 ... 29
      디버깅 ... 34
   3. 안드로이드 어플리케이션 구조 ... 39
      〈AndroidManifest.xml〉과 어플리케이션 시작 구조 ... 39
      액티비티 상태 변화 ... 41
      레이아웃과 리소스 ... 43
   4. 뷰와 유저 인터페이스 요소들 ... 44
      유저 인터페이스(User Interface) ... 44
      뷰의 계층(View Hierarchy) ... 44
      레이아웃 ... 45
      위젯(Widgets) ... 46
      UI 이벤트(UI Events) ... 46
      메뉴(Menu) ... 46
Chapter 1 App - 다양한 액티비티 꾸미기
   1. 액티비티 사이 애니메이션 전환 -「액티비티 애니메이션」 ... 50
   2. 다이얼로그 기반 액티비티 -「다이얼로그 테마」 ... 52
   3. 다이얼로그 꾸미기 -「커스텀 다이얼로그」 ... 54
   4. 헬로 액티비티 -「헬로 월드」 ... 57
   5. 액티비티 타이틀 꾸미기 -「커스텀 타이틀」 ... 59
   6. 액티비티 시작을 다른 액티비티에 전달하기 -「포워딩」 ... 64
   7. 액티비티 상태 저장하고 읽기 -「퍼시스턴스」 ... 67
   8. 주소록 배지 사용하기 -「퀵 컨택츠 배지」 ... 72
   9. 액티비티 결과값 받기 -「결과 받기」 ... 77
   10. 액티비티 실행 방향 변경하기 -「리디렉션」 ... 81
   11. 액티비티 계층 순서 변경하기 -「액티비티 순서」 ... 86
   12. 액티비티 상태 저장과 복원 -「상태 저장과 복원」 ... 90
   13. 안드로이드 배경 변경하기 -「안드로이드 바탕화면」 ... 93
   14. 반투명 액티비티 만들기 -「반투명 액티비티」 ... 96
   15. 반투명 액티비티 블러 효과 주기 -「반투명 블러」 ... 98
   16. 액티비티 배경을 안드로이드 배경으로 -「액티비티 배경」 ... 100
Chapter 2 App - 알람과 알림 서비스
   1. 시스템으로부터 알람 받기 -「알람 컨트롤러」 ... 104
   2. 알람 서비스 만들기 -「알람 서비스」 ... 110
   3. 다양한 모양으로 대화상자 만들기 -「다이얼로그」 ... 114
   4. 컴포넌트 사이의 연결은 인텐트로 -「인텐트」 ... 124
   5. 홈 스크린에 숏컷 만들기 -「숏컷」 ... 131
   6. XML로 다양한 메뉴 만들기 -「메뉴」 ... 135
   7. 알림 매니저 사용하기 -「알림 매니저」 ... 140
   8. 알림 서비스 만들기 -「알림 서비스 컨트롤러」 ... 145
   9. 토스트 윈도우를 알림으로 사용하기 -「문자열로 알리기」 ... 149
   10. 상태 바에 알림 표시하기 -「상태 바」 ... 151
Chapter 3 App - 프리퍼런스와 서비스, 그리고 음성
   1. XML로 프리퍼런스 화면 만들기 -「프리퍼런스」 ... 160
   2. 한번에 프리퍼런스 값 모두 읽기 -「프리퍼런스 값」 ... 165
   3. 프리퍼런스 의존 관계 만들기 -「프리퍼런스 의존 관계」 ... 168
   4. 프리퍼런스 디폴트 값 만들기 -「프리퍼런스 디폴트 값」 ... 170
   5. 코드에서 직접 프리퍼런스 구성하기 -「코드 프리퍼런스」 ... 172
   6. 프리퍼런스 사용 고급 기법 -「프리퍼런스 고급」 ... 176
   7. 안드로이드 검색 실행하기 -「검색 실행」 ... 184
   8. 검색 결과 표시하기 -「검색 결과 표시」 ... 192
   9. 포 - 그라운드 서비스 만들기 -「포-그라운드 서비스」 ... 196
   10. 로컬 서비스 만들기와 바인딩하기 -「로컬 서비스 바인딩」 ... 204
   11. 서비스 시작하고 종료하기 -「로컬 서비스 컨트롤러」 ... 210
   12. 리모트 서비스 만들기와 바인딩하기 -「리모트 서비스 바인딩」 ... 212
   13. 리모트 서비스 시작하고 종료하기 -「리모트 서비스 컨트롤러」 ... 223
   14. 서비스에 인자 전달하기 -「서비스 인자」 ... 225
   15. 문장을 음성으로 출력하기 -「음성출력」 ... 232
   16. 음성인식 -「음성인식」 ... 236
Chapter 4 Content
   1. 어플리케이션 포함 파일 읽기 -「에셋」 ... 242
   2. 문자열 리소스 읽기 -「리소스」 ... 244
   3. 스타일 문자열 사용하기 -「스타일 문자열」 ... 247
Chpater 5 Graphics Ⅰ
   1. 알파 비트맵 만들기 -「알파 비트맵」 ... 252
   2. 비트맵 애니메이션 만들기 -「비트맵 애니메이션」 ... 256
   3. 호 그리기 -「아크」 ... 262
   4. 다양한 이미지 디코딩 -「디코드 스트림」 ... 266
   5. 2차원 비트맵 메쉬 -「비트맵 메쉬」 ... 271
   6. 코드에서 비트맵 직접 생성하기 -「비트맵 픽셀」 ... 276
   7. 카메라 미리 보기 -「카메라 미리 보기」 ... 282
   8. 그리기 영역 묶어두기 -「그리기 클리핑」 ... 286
   9. 컬러 필터 적용해서 그리기 -「컬러 피터」 ... 291
   10. 컬러 매트릭스로 컨트라스트 구현 -「컬러 매트릭스」 ... 297
   11. 나침반 만들기 -「컴파스」 ... 302
   12. 비트맵 생성 옵션 조정하기 -「비트맵 옵션」 ... 307
   13. 안드로이드 덴시티 -「덴시티」 ... 312
   14. XML로 ShapeDrawable 정의하기 -「쉐이프 그리기 객체 Ⅰ」 ... 321
   15. 직접 ShapeDrawable 만들기 -「쉐이프 그리기 객체 Ⅱ」 ... 326
   16. 터치로 그림 그리기 -「터치 그리기 Ⅰ」 ... 330
   17. 그리기에 페이드(fade) 효과 만들기 -「터치 그리기 Ⅱ」 ... 336
   18. 백 스크린 비트맵 이용하기 -「레이어」 ... 343
   19. 현재 폰트로 문자열 폭 측정하기 -「문자열 폭 측정」 ... 346
Chapter 6 Graphics Ⅱ
   1. 3차원 공간상에 물체 만들기 -「OpenGL 뷰」 ... 352
   2. 3차원 객체에 이미지 입히기 -「텍스처」 ... 370
   3. 3차원 뷰에서 이벤트 처리하기 -「터치 회전」 ... 379
   4. 2차원 뷰 위에 3차원 렌더링하기 -「투명 OpenGL 뷰」 ... 383
   5. 그리기 선분에 패스효과 적용하기 -「패스효과」 ... 385
   6. 패스 내 부 채우기 -「패스 채움 타입」 ... 390
   7. 쉐이더 객체로 패턴 만들기 -「패턴」 ... 393
   8. 픽처 객체로 메타파일 만들기 -「픽처 객체」 ... 397
   9. 한번에 여러 선 그리기 -「선 그리기」 ... 400
   10. 좌표 매핑으로 그리기 행렬 만들기 -「그리기 행렬 Ⅰ」 ... 403
   11. 맞추기(fit) 행렬 만들기 -「그리기 행렬 Ⅱ」 ... 407
   12. 자동 제거 기능 비트맵 만들기 -「제거 가능 비트맵」 ... 411
   13. 영역 연산과 분해 -「영역 연산」 ... 418
   14. 그레이디언트를 이용해 둥근 사각형 만들기 -「둥근 사각형」 ... 423
   15. 센서 테스트 -「센서 테스트」 ... 427
   16. 3D 위에 2D 뷰 만들기 -「오버레이」 ... 432
   17. 스윕 그레이디언트 -「스윕」 ... 437
   18. 문자열 정렬하기 -「텍스트 정렬」 ... 440
   19. 다양한 서체 사용하기 -「서체」 ... 445
   20. 유니코드 사용하기 -「유니코드」 ... 447
   21. 2차원 버텍스 -「버텍스」 ... 451
   22. 픽셀 합성 규칙 -「합성 규칙」 ... 456
Chapter 7 Media
   1. 미디어 플레이어 만들기 -「미디어 플레이어」 ... 464
   2. 비디오 플레이어 만들기 -「비디오 플레이어」 ... 474
Chapter 8 OS
   1. 바이브레이터로 모스 부호 만들기 -「바이브레이터」 ... 480
   2. 다양한 센서 테스트 -「센서」 ... 485
Chapter 9 Text
   1. 링크 텍스트 만들기 -「링키파이」 ... 494
   2. 스크롤 가능 텍스트 뷰 만들기 -「스크롤 텍스트 뷰」 ... 497
   3. 움직이는 텍스트 -「마키 텍스트」 ... 500
Chapter 10 View - 위젯과 그 특성
   1. 가장 간단한 위젯 버튼 사용해보기 -「버튼」 ... 504
   2. 타이머 만들어 시간 측정하기 -「크로노미터」 ... 508
   3. 날짜 입력 받기 -「날짜 선택 다이얼로그」 ... 513
   4. 시간 입력을 위젯으로 받기 -「시간 선택 위젯」 ... 517
   5. 이미지로 버튼 더 예쁘게 꾸미기 -「이미지 버튼」 ... 520
   6. 이미지 원하는 대로 표시하기 -「이미지 뷰」 ... 524
   7. 작업의 진행정도 깔끔하게 보여주기 -「단계 모드 프로그레스 바」 ... 529
   8. 언제 끝날지 모르는 작업에 사용하는 프로그레스 바 -「무한 모드 프로그레스 바」 ... 534
   9. 언제 끝날지 모르는 작업 중 사용자 조작을 막아야 할 때 -「무한 모드 프로그레스 다이얼로그」 ... 537
   10. 사용자가 선택 사항 중 하나를 선택할 수 있게 하기 -「라디오 버튼 그룹」 ... 541
   11. 점수를 줄 수 있는 편리한 위젯 -「레이팅 바」 ... 545
   12. 스크롤 바 다양하게 꾸미기 -「스크롤 바」 ... 549
      기본적인 스크롤 바 -「기본 스크롤 바」 ... 549
      좀 더 예쁜 스크롤 바 -「사용자 이미지 스크롤 바」 ... 550
      스크롤 바 위치 미세하게 조절하기 -「스크롤 바 스타일」 ... 553
   13. 컨텐츠의 특정 지점으로 바로 갈 수 있게 하기 -「검색 바」 ... 557
   14. 간편한 방법으로 웹 페이지 화면에 보여주기 -「웹 뷰」 ... 561
   15. 다양한 테마 적용으로 단숨에 어플리케이션 외형 바꾸기 -「위젯-테마적용하기」 ... 565
   16. 필요할 때 위젯을 보여주고 필요 없으면 숨기기 -「뷰의 가시성」 ... 570
   17. 마음에 드는 위젯이 없다면 직접 만들기 -「사용자 정의 뷰」 ... 573
   18. 포커스를 마음대로 조절하기 -「포커스」 ... 581
      포커스 비활성화로 위젯 사용 못하게 하기 -「수직 방향 포커스 변화」 ... 581
      포커스 진행 방향 변경하기 -「수평 방향 포커스 변화」 ... 584
      포커스 진행 방향 변경 응용 -「원형 방향 포커스 변화」 ... 586
      내부 선택이 가능한 아이템을 가지는 사용자 정의 뷰에서 포커스 다루기 -「사용자 방향 포커스 변화」 ... 588
Chapter 11 View - 레이아웃
   1. 수직 또는 수평 한 방향으로 위젯 배치하기 -「리니어 레이아웃」 ... 598
      기초적인 수직 배치 방법 -「리니어 레이아웃 - 수직배치」 ... 598
      수직 배치 후 남는 빈 공간 채우기 -「리니어 레이아웃 - 수직 방향 화면 채우기」 ... 601
      수직 배치 시 자식 뷰들의 크기에 가중치 부여하기 -「리니지 레이아웃 - 가중치」 ... 602
      수평 배치 시 동일한 크기로 배치하기 -「리니어 레이아웃 - 수평 방향 배치」 ... 604
      사용자 입력창 만들기 1 -「리니어 레이아웃 - 사용자 입력창」 ... 606
      가장 큰 뷰에 크기 맞추기 -「리니어 레이아웃 - 동일 크기 자식 뷰」 ... 610
      부모 뷰의 크기 결정에 따르기 -「리니어 레이아웃 - 자식 뷰 정렬」 ... 613
      가중치 속성으로 큰 뷰를 적절한 크기로 만들기 -「리니어 레이아웃 - 가중치의 또 다른 특징」 ... 616
      여러 뷰를 하나의 뷰처럼 쓰기 -「리니어 레이아웃 - 자식 뷰와 상태공유」 ... 618
   2. 상대적인 위치로 위젯 배치하기 -「상대 위치 레이아웃」 ... 621
      수직 배치 흉내내기 -「상대 위치 레이아웃 - 수직 방향 배치」 ... 621
      사용자 입력창 만들기 2 -「상대 위치 레이아웃 - 사용자 입력창」 ... 623
   3. 화면 스크롤시키기 -「스크롤 뷰」 ... 626
      스크롤 뷰 선언하기 -「내용이 적은 스크롤 뷰」 ... 626
      실제로 동작하는 스크롤 뷰 살펴보기 -「내용이 많은 스크롤 뷰」 ... 627
      사용자 정의 뷰에서 스크롤 구현하기 -「스크롤 뷰 - 사용자 정의 뷰와 어울리기」 ... 629
   4. 자식 뷰를 표로 배치하여 정렬시키기 -「테이블 레이아웃」 ... 633
      테이블 레이아웃 기초 사용법 -「테이블 레이아웃」 ... 633
      표 사이사이에 빈칸 만들기 -「테이블 레이아웃 - 빈칸처리」 ... 634
      긴 내용물은 줄어들기 속성으로 대처하기 -「테이블 레이아웃 - 줄어들기 속성」 ... 636
      빈 공간을 늘여서 화면에 배치하기 -「테이블 레이아웃 - 늘이기 속성」 ... 638
      늘이기 속성과 줄로 메뉴처럼 배치하기 -「테이블 레이아웃 - 줄긋기」 ... 640
      늘이기 속성과 줄로 메뉴처럼 배치하기 2 -「테이블 레이아웃 - 줄긋기 응용」 ... 641
      특정 열에 접었다 펴기 속성을 주어 공간 아끼기 -「테이블 레이아웃 - 특정 셀 접기」 ... 642
      사용자 입력창 만들기 -「테이블 레이아웃 - 사용자 입력창」 ... 647
      정렬 속성으로 다양한 위치 주기 -「테이블 레이아웃 - 정렬 속성」 ... 649
      셀 합치기 -「테이블 레이아웃 - 셀 합치기」 ... 652
   5. 다른 뷰와 문자열 위치를 어울리게 만들기 -「베이스라인 속성」 ... 654
      리니어 레이아웃의 베이스라인 속성 익히기 -「베이스라인 속성 - 리니어 레이아웃」 ... 654
      상대 위치 레이아웃에서 멀티 라인을 가지는 필드와 베이스라인 맞추기 -「멀티라인 베이스라인」 ... 659
      리니어 레이아웃에서 특정 뷰를 지정하여 베이스라인 정렬하기 -「중첩된 뷰 - 베이스라인 속성」 ... 661
Chapter 12 View - 어댑터 뷰
   1. 목록을 보여주는 위젯 -「리스트 뷰」 ... 666
   2. 배열에 있는 문자열을 보여주는 리스트 -「리스트 뷰 - 배열 데이터」 ... 667
   3. 주소록 연락처 리스트로 보여주기 -「리스트 뷰 - 전화번호부 연락처 데이터」 ... 669
   4. 주소록에 있는 사람 이름을 전화번호와 함께 보여주기 -「리스트 뷰 - 전화번호부 전화번호 데이터」 ... 672
   5. 필요한 어댑터가 없으면 직접 정의하기 -「리스트 뷰 - 사용자 정의 어댑터」 ... 675
   6. 리스트 사이에 분리 기호 삽입하기 -「리스트 뷰 - 아이템 분리 기호」 ... 679
   7. 사용자 어댑터를 응용하여 리스트 아이템을 접었다 펴는 동작 만들기 -「리스트 뷰 - 펼칠 수 있는 아이템」 ... 683
   8. 아이템이 선택되었을 때 전화번호부의 전화번호 보여주기 -「리스트 뷰 - 아이템 선택 시 동작」 ... 688
   9. 실시간으로 리스트 뷰에 아이템 추가하기 -「리스트 뷰 - 사용자 정의 어댑터 - 사진보기」 ... 694
   10. 스크롤 시 중첩된 정보창으로 유용한 정보 보여주기 -「리스트 뷰 - 아이템 인덱스」 ... 700
   11. 리스트 뷰를 단일 선택 모드로 사용하기 -「리스트 뷰 - 단일 선택 모드」 ... 706
   12. 리스트 뷰를 다중 선택 모드로 사용하기 -「리스트 뷰 - 다중 선택 모드」 ... 708
   13. 사용자가 입력한 데이터를 리스트 뷰에 필기록처럼 보여주기 -「리스트 뷰 - 필기록 모드」 ... 710
   14. 데이터를 보여줄 필요가 있을 때만 가져오기 -「리스트 뷰 - 데이터를 천천히 가져오는 어댑터」 ... 714
   15. 어댑터에서 뷰를 만들 때 좀 더 효율적인 방법 -「리스트 뷰 - 효율적인 어댑터」 ... 719
   16. 정말 간단하게 구현하는 입력창 자동 완성 기능 -「자동 완성 텍스트 뷰」 ... 722
   17. 커서 어댑터를 사용한 주소록 인명 자동 완성 기능 -「자동 완성 텍스트 뷰 - 사용자 정의 어댑터」 ... 724
   18. 사용법을 잘 모르는 사용자를 위해 자동 완성창에 힌트 보여주기 -「자동 완성 텍스트 뷰 - 힌트기능」 ... 729
   19. 자동 완성 기능 한 창에서 여러 번 사용할 수 있게 하기 -「다중 자동 완성 텍스트 뷰」 ... 731
   20. 리스트 아이템 확장하여 사용하기 -「확장 가능한 리스트 뷰」 ... 733
   21. 전화번호부를 사람별로 그룹지어 보여주기 -「확장 가능한 리스트 뷰 - 전화번호부」 ... 739
   22. 간단하게 확장 가능한 리스트 뷰 사용하기 -「확장 가능한 리스트 뷰 - 간단한 사용법」 ... 742
   23. 선택 가능한 아이템 중 사용자가 선택한 것 고정된 위치에 보여주기 -「갤러리 위젯」 ... 745
      순차적으로 사진을 보여주는 갤러리 위젯 사용 방법 -「갤러리 위젯 - 사진 보여주기」 ... 745
      순차적으로 주소록의 이름을 보여주는 갤러리 위젯 사용 방법 -「갤러리 위젯 - 주소록 보여주기」 ... 750
   24. 아이템을 가상의 격자 공간에 보여주기 -「그리드 뷰」 ... 753
      설치된 모든 어플리케이션 아이콘 격자 공간에 보여주기 -「그리드 뷰 - 아이콘 보여주기」 ... 753
      이미지 격자 공간에 보여주기 -「그리드 뷰 - 사진 보여주기」 ... 756
   25. 많은 선택 사항 다이얼로그로 띄워서 보여주기 -「스피너」 ... 759
   26. 한 화면에 여러 개의 화면 통합하기 -「탭 위젯」 ... 763
      ID로 화면을 지정해서 보여주기 -「탭 기능 - ID를 이용한 사용법」 ... 763
      화면이 필요할 때 뷰를 생성해서 보여주기 -「탭 기능 - 팩토리를 이용한 사용법」 ... 767
      이미 만들어진 액티비티 활용하기 -「탭 기능 - 인텐트를 이용한 사용법」 ... 769
Chapter 13 View - 애니메이션
   1. 암호가 틀리면 로그인창 흔들기 -「애니메이션 - 흔들기」 ... 774
   2. 여러 개의 애니메이션을 조합해서 새로운 애니메이션 만들기 -「애니메이션 - 조합하기」 ... 777
   3. 애니메이션의 처음과 끝만 지정하고 나머지는 편리하게 안드로이드에 맡기기 -「애니메이션 - 인터폴레이터」 ... 783
   4. 3D 전환 효과 구현하기 -「애니메이션 - 3D 전환」 ... 787
   5. 이미지 부드럽게 전환하여 보여주기 -「이미지 전환기」 ... 796
   6. 글자 부드럽게 전환하여 보여주기 -「텍스트 전환기」 ... 801
   7. 레이아웃에서 배치 애니메이션 주기 -「레이아웃 애니메이션」 ... 804
      그리드 뷰에서 아이템 서서히 나타나게 하기 -「레이아웃 애니메이션 - 그리드 뷰 - 서서히 나타나기」 ... 804
      리스트 뷰에서 아이템 차례대로 나타나게 하기 -「레이아웃 애니메이션 - 리스트 뷰 - 차례대로 나타나기」 ... 808
      리스트 뷰에서 아이템 역순으로 나타나게 하기 -「레이아웃 애니메이션 - 리스트 뷰 - 반대순서로 나타나기」 ... 811
      그리드 뷰에서 아이템 무작위로 나타나게 하기 -「레이아웃 애니메이션 - 그리드 뷰 - 물결치듯 나타나기」 ... 815
      레이아웃 애니메이션 여러 개 중첩해서 보여주기 -「레이아웃 애니메이션 - 중첩된 애니메이션」 ... 817
닫기