목차
저자소개 ... 5
옮긴이의 말 ... 6
들어가며 ... 12
Part 1 핵심개념
   01 개요 ... 17
      스마트폰 프로그래밍의 장단점 ... 17
      안드로이드 프로그램 구조 ... 19
      안드로이드에서 사용 가능한 기능 ... 20
      나머지 부분에 대한 요약 ... 21
   02 안드로이드 설치 ... 22
      1단계 : 자바 설치 ... 22
      2단계 : 안드로이드 SDK 설치 ... 24
      3단계 : 이클립스를 위한 ADT 설치 ... 28
      4단계 : 아파치 Ant 설치 ... 30
      5단계 : 애뮬레이터 설정 ... 31
      6단계 : 실체 휴대폰을 위한 설정 ... 35
   03 안드로이드 프로젝트 ... 38
      1단계 : 새로운 프로젝트 생성 ... 38
      2단계 : 애플리케이션 컴파일, 설치 그리고 에뮬레이터나 휴대폰에서의 실행 ... 42
   04 첫 프로젝트 점검 ... 46
      프로젝트 구조 ... 46
      매니페스트 파일 ... 49
   05 이클립스 ... 52
      ADT가 제공하는 것 ... 52
      이클립스 다루기 ... 53
      IDE들을 대체할 수 있는 것 ... 59
      IDE와 이 책의 관계 ... 60
   06 첫 프로젝트 향상 ... 61
      다양한 크기의 화면 지원 ... 61
      특징 버전들 ... 62
Part 2 액티비티
   07 첫 프로젝트 재작성 ... 67
      액티비티 ... 67
      액티비티 분석 ... 68
      액티비티의 구축과 실행 ... 70
   08 XML 기반 레이아웃 사용 ... 72
      XML 기반 레이아웃이란 무엇인가? ... 72
      왜 XML 기반 레이아웃을 사용하는가? ... 73
      XML 레이아웃은 어떻게 생겼는가? ... 73
      @ 부호는 무엇인가? ... 75
      어떻게 XML 레이아웃을 자바에 적용할 것인가? ... 75
      종합 정리 ... 76
   09 기본 위젯 ... 78
      라벨 배치 ... 78
      버튼은 누가 가지고 있는가? ... 80
      이미지 사용하기 ... 80
      녹색 필드와 다른 색상들 ... 82
      다른 성질을 가진 체크 박스 ... 84
      라디오 버튼 켜기 ... 86
      보기 좋은 View ... 88
   10 컨테이너(Container) ... 91
      선형적 생각 ... 91
      LinearLayout의 개념과 속성 ... 92
      LinearLayout의 예제 ... 95
      모든 위젯들의 상관관계 ... 101
      오버랩 ... 106
      공백 상태 ... 108
      TableLayout 예제 ... 110
      스크롤 작업 ... 112
   11 입력메소드 프레임워크 ... 115
      하드키보드와 소프트키보드 ... 115
      요구에 대한 맞춤 기능 ... 116
      안드로이드가 알려주는 선택에 대한 방향 제시 ... 120
      맞게 조정하기 ... 123
      IME가 불필요한 경우 ... 124
   12 선택 위젯 사용하기 ... 126
      상황에 적응하기 ... 126
      ArrayAdapter 사용하기 ... 127
      부적당한 리스트와 좋은 리스트 ... 128
      선택 모드 ... 130
      회전 제어 ... 132
      격자무늬 ... 136
      필드 : 지금부터는 35% 적게 타이핑! ... 140
      갤러리 ... 144
   13 리스트 고급 활용 ... 145
      가방 기본적인 작업 ... 145
      동적 표현 ... 148
      각 행의 팽창하기 ... 150
      성능 개선 ... 153
   14 고급 위젯과 컨테이너 ... 164
      엄선하기 ... 164
      시간 유지 ... 169
      탐색 슬라이더 ... 171
      탭에 삽입하기 ... 172
      연동하기 ... 174
      탭의 넘김 기능 ... 180
      서랍에서 가져오기 ... 186
      그 밖의 다른 좋은 위젯들 ... 189
   15 웹킷 브라우저 삽입 ... 191
      작은 문서에 대한 브라우저 ... 191
      원하는 내용 불러오기 ... 194
      네비게이션 기능 ... 195
      재미있는 클라이언트 ... 196
      각 종류의 설정, 환경 설정과 옵션 ... 198
   16 메뉴 적용 ... 199
      메뉴의 특징 ... 199
      옵션에서의 메뉴 ... 200
      컨텍스트에서의 메뉴들 ... 201
      간단히 살펴보기 ... 202
      여전히 더 많은 팽창 ... 208
      메뉴의 범위와 허니컴 ... 212
   17 팝업 메시지 ... 213
      토스트 띄우기 ... 213
      경고! 경고! ... 214
      팝업 메시지 확인하기 ... 215
   18 액티비티 생명주기와 이벤트 ... 218
      슈뢰딩거의 액티비티 ... 218
      액티비티의 활동(생성)과 소멸 ... 219
      상태의 유예기간 ... 221
   19 회전처리 ... 222
      소멸의 철학 ... 222
      조금 다를 뿐이지 모두 동일하다 ... 223
      이제 좀 더 많은 것을 저장해보자! ... 230
      DIY 회전 ... 232
      빠른 결정 강요하기 ... 236
      그 모든 것의 타당성 ... 239
   20 스레드 ... 241
      메인 애플리케이션 스레드 ... 241
      ProgressBar를 이용한 진행 처리하기 ... 242
      핸들러 사용하기 ... 243
      UI 스레드는 어디로 사라졌는가? ... 247
      Async에 대한 느낌 ... 247
      스레드와 회전 ... 255
      그리고 현재, 주의 사항 ... 260
   21 인텐트 필터 ... 262
      인텐트 ... 262
      인텐트 생성 ... 264
      인텐트 리시버 ... 266
      일시정지 문제 ... 267
   22 액티비티 실행 ... 268
      액티비티 종류 ... 268
      실행 ... 269
      탭 브라우징 ... 273
   23 리소스 ... 277
      리소스의 종류 ... 277
      문자열 ... 278
      이미지 ... 283
      XML ... 285
      기타 리소스 ... 288
      환경에 맞는 리소스 선택 ... 290
      RTL 언어 ... 294
   24 스타일 ... 296
      DIY DRY ... 296
      스타일 엘리먼트 ... 298
      Theme : 다른 스타일 ... 301
   25 다양한 화면크기 ... 303
      기본 화면 크기 ... 3003
      화면 크기별 대응 ... 304
      기기별 레이아웃 ... 307
      밀도와 실제 크기 ... 310
      레이아웃 변경 ... 312
      예제 : EU4You ... 313
Part 3 허니컴과 태블릿
   26 허니컴 UI 소개 ... 327
      왜 허니컴인가? ... 327
      사용자들이 보는 것들 ... 328
      홀로그래픽 테마 ... 331
      나머지 디바이스를 다루는 방법 ... 332
   27 액션 바 ... 335
      Action bar 사용 가능하게 만들기 ... 335
      메뉴 아이템을 액션 바에 올리기 ... 336
      Logo에 대응하기 ... 337
      Custom view를 action bar에 추가하기 ... 338
      휴대폰을 잊지 마라! ... 343
   28 프래그먼트 ... 344
      Fragment 소개 ... 344
      Fragment class 만들기 ... 347
      Fragments, 레이아웃, 액티비티 그리고 다양한 화면 크기 ... 355
      Fragment와 설정 변경하기 ... 362
      Fragment 설계하기 ... 362
   29 플랫폼 변경 ... 364
      실패하게 만드는 요인들 ... 364
      API 변화에의 대처 ... 365
      허니컴을 위한 패턴들 ... 370
   30 파일 접근 ... 374
      참조 데이터 사용 ... 374
      읽기와 쓰기 ... 378
      외부 저장장치: 거대한 이코노미 사이즈의 공간 ... 381
      StrictMode : Janky 코드 피하기 ... 383
      리눅스 파일 시스템 ... 387
Part 4 데이터저장, 네트워크 서비스, API
   31 환경설정 ... 391
      원하는 값 추출 ... 391
      환경설텅 관리 ... 392
      PreferenceActivity 소개 ... 393
      환경설정 기능 제공 ... 394
      구조 변경 ... 398
      환경설정 팝업의 종류 ... 401
      프래그먼트를 통한 환경설정 ... 405
   32 로컬 데이터베이스 관리 및 실행 ... 412
      SQLite 요약 웹문서 ... 414
      시작하기 ... 414
      표의 구축 ... 418
      데이터 생성 ... 418
      무엇이 오가는가 ... 420
      플래시 : 원래보다 빠른 소리 ... 423
      모든 곳에 존재하는 데이터 ... 424
   33 자바 라이브러리 ... 426
      Ants와 JARs ... 426
      외부적 한계 ... 427
      스크립트를 따라가기 ... 428
      스크립트 리뷰 ... 432
   34 인터넷을 통한 의사소통 ... 433
      휴양과 휴식 ... 433
      Internet-Aware 안드로이드 컴포넌트 ... 439
      Janky 코드로부터 벗어나기 ... 450
Part 5 서비스
   35 서비스 이론 ... 453
      서비스가 왜 필요한가? ... 453
      서비스 셋업하기 ... 454
      서비스와의 소통 ... 456
      서비스로부터 의사소통하기 ... 458
   36 기본적인 서비스 패턴 ... 461
      다운로더 ... 461
      뮤직 플레이어 ... 466
      웹 서비스 인터페이스 ... 470
   37 알림(Notification) ... 485
      알림 설정 ... 485
      작동하는 알림 ... 488
      포어그라운드에 위치하기 ... 491
      알림과 허니콤 ... 494
Part 6 기타 안드로이드 능력
   38 승인 문의 및 요청 ... 499
      승인 받기 ... 499
      보안 ... 500
      구 애플리케이션에서의 새로운 승인 ... 503
      승인 : 선불 또는 안함 ... 504
   39 위치기반 서비스 접속 ... 505
      위치 제공자 ... 505
      위치 제공자 선택 ... 506
      이동 ... 507
      목적지 ... 509
      테스트 ... 510
   40 MapView와 MapActivity로 Mapping하기 ... 511
      약정 ... 511
      Piling on ... 512
      API KEY ... 512
      베어본 ... 513
      맴 컨트롤 ... 516
      레이어 위의 레이어 ... 517
      MyLocationOverlay ... 520
      험한 지형 ... 521
      지도와 Fragment들 ... 522
   41 휴대폰 전화 다루기 ... 527
      매니저에게 보고하기 ... 527
      전화 걸기!! ... 528
      실제로 전화 걸기 ... 531
   42 폰트(글자체) ... 532
      글자체를 사랑하자 ... 532
      추가적인 서체들 ... 534
      글리프 ... 536
   43 개발 도구 ... 538
      계층 탐색기 ... 538
      DDMS : 안드로이드 후드 아래 ... 541
      adb : DDMS ... 549
Part 7 애플리케이션 환경
   44 안드로이드 대체 환경 ... 553
      자바 ... 553
      장점 ... 554
      트렌스 거스르기 ... 555
      지원, 구조 ... 555
      Caveat 개발자 ... 556
   45 HTML5 ... 557
      오프라인 애플리케이션 ... 44
      웹 보관함 ... 563
      상품 ... 566
      단점 ... 567
      HTML5와 대체 안드로이드 브라우저 ... 570
      HTML5 : 기준 ... 570
   46 PhoneGap ... 571
      PhoneGap은 무엇인가 ... 571
      사용 ... 574
      PhoneGap과 Checklist 예제 ... 578
      만나게 되는 문제들 ... 584
      더 많은 정보 ... 586
   47 다른 대체 환경 ... 587
      Rhodes ... 587
      Flash, Flex, AIR ... 588
      Jruby와 Ruoto ... 588
      안드로이드에 대한 MONO ... 588
      App Inventor ... 589
      티타늄 모바일 ... 591
      다른 Jvm 컴파일 언어 ... 591
Part 8 안드로이드의 진화
   48 장치 다루는 법 ... 595
      이 앱은 명확한 지시를 포함한다 ... 595
      보장된 시장 ... 598
      다양한 다른 것들 ... 599
      버그 ... 599
      디바이스 테스트 ... 600
   49 당면과제 ... 601
      질문과 답변 ... 601
      소스를 향해 ... 602
      뉴스 ... 603
찾아보기 ... 604
닫기