第1章 Android概述 1
1.1 Android的演化史 1
1.1.1 Android的诞生 2
1.1.2 Android的发展 2
1.2 Android的两面性 5
1.3 使用Android的设备 5
1.4 Android设备的硬件差异 6
1.4.1 显示屏 6
1.4.2 用户输入 6
1.4.3 传感器 7
1.5 Android的特点 7
1.5.1 多进程和应用程序微件 7
1.5.2 触摸、手势和多点触控 8
1.5.3 硬键盘和软键盘 8
第2章 Android开发环境及常用工具 9
2.1 搭建Android开发环境 9
2.1.1 获取Android开发所需软件 9
2.1.2 安装开发软件并配置环境 10
2.2 Android开发常用工具 20
2.3 第一个Android应用HelloWorld 21
实例2-1 HelloWorld实例(\Chapter2\HelloWorld) 21
2.4 Android应用程序结构分析 24
2.5 Android应用的基本组件介绍 26
2.5.1 Activity和View 26
2.5.2 Intent和IntentFilter 27
2.5.3 Service 27
2.5.4 Broadcast Receiver 27
2.5.5 Content Provider 28
第3章 Activity和Intent 29
3.1 Activity的生命周期 29
实例3-1 Activity生命周期实例(Chapter3\ActivityLifeCycle) 31
3.2 控制Activity的生命周期 33
3.2.1 强制执行单任务模式 34
3.2.2 强制手机屏幕方向 34
3.2.3 保存和恢复Activity的信息 35
3.3 多个Activity和Intent 37
3.3.1 启动另一个Activity 37
实例3-2 启动另一个Activity实例(Chapter3\SetupNewActivity) 37
3.3.2 启动另一个Activity将语音转换成文本并返回结果 40
实例3-3 Activity返回值实例(chapter3\ActivityResultDemo) 41
3.3.3 使用隐式Intent创建Activity 43
实例3-4 隐式Intent创建Activity实例(Chapter3\ImplicitIntent) 44
3.3.4 在Activity之间传递数据 45
实例3-5 Activity之间传递数据实例(Chapter3\ActivityDataPass) 46
第4章 界面编程 49
4.1 界面编程与视图(View)组件 49
4.1.1 视图组件与容器组件 49
4.1.2 控制UI界面 50
4.2 布局管理器 55
4.2.1 线性布局(LinearLayout) 55
实例4-1 线性布局演示(LinearLayoutDemo) 55
4.2.2 表格布局(TableLayout) 57
实例4-2 表格布局演示(TableLayoutDemo) 57
4.2.3 帧布局(FrameLayout) 59
实例4-3 帧布局演示(FrameLayoutDemo) 59
4.2.4 相对布局(RelativeLayout) 60
实例4-4 相对布局演示(RelativeLayoutDemo) 61
4.2.5 绝对布局(AbsoluteLayout) 62
实例4-5 绝对布局演示(AbsoluteLayout) 62
4.3 基本界面组件 63
4.3.1 文本框(TextView)与编辑框(EditText) 63
4.3.2 按钮(Button)与图片按钮(ImageButton) 64
实例4-6 登录界面演示(LoginUIDemo) 65
4.3.3 单项选择(RadioGroup)和单选按钮(RadioButton) 68
实例4-7 单项选择演示(RadioGroupDemo) 68
4.3.4 复选框(checkBox) 70
实例4-8 复选框演示(CheckBoxDemo) 71
4.3.5 图片视图(ImageView) 73
4.3.6 状态开关按钮(ToggleButton) 73
实例4-9 开关门演示(OnOffDoorDemo) 73
4.3.7 时钟(AnalogClock和DigitalClock) 75
实例4-10 时钟演示(ClockDemo) 75
4.4 高级界面组件 76
4.4.1 自动完成文本框(AutoCompleteTextView) 77
实例4-11 自动完成文本框演示(AutoCompleteTextViewDemo) 77
4.4.2 下拉列表(Spinner) 78
实例4-12 下拉列表演示(Spinner) 78
4.4.3 日期选择器(DatePicker)与时间选择器(TimePicker) 80
实例4-13 日期和时间设置演示(DateTimeDemo) 80
4.4.4 进度条(ProgressBa r) 82
实例4-14 进度条演示(ProgressBarDemo) 83
4.4.5 拖动条(SeekBar) 84
实例4-15 拖动条实例(SeekBarDemo) 84
4.4.6 星级评分条(RatingBar) 86
实例4-16 星级评分条实例(RatingBarDemo) 86
4.4.7 选项卡(TabHost) 87
实例4-17 选项卡实例(TabHost) 88
4.4.8 滚动视图(ScrollView) 90
实例4-18 滚动视图实例(ScrollViewDemo) 90
4.4.9 列表视图(ListView) 92
实例4-19 ArrayAdapter适配器列表实例(ArrayAdapterListViewDemo) 92
实例4-20 SimpleCursorAdapter适配器列表实例(CursorListViewDemo) 94
实例4-21 SimpleAdapter适配器列表实例(SimpleAdapterListViewDemo) 95
4.4.10 可展开的列表视图(ExpandableListView) 97
实例4-22 可展开列表视图实例(ExpandableListDemo) 98
4.4.11 网格视图(GridView) 101
实例4-23 网格视图实例(GridViewDemo) 101
4.4.12 画廊视图(Gallery)和图片切换器(ImageSwitcher) 104
实例4-24 相册实例(AlbumDemo) 104
4.5 对话框 107
4.5.1 使用AlertDialog创建简单的对话框 108
4.5.2 使用AlertDialog创建列表对话框 109
4.5.3 使用AlertDialog创建自定义对话框 111
4.5.4 使用ProgressDialog创建进度对话框 113
4.5.5 使用DatePickerDialog和TimePickerDialog 114
实例4-25 日期选择对话框和时间选择对话框实例(DateTimeDialogDemo) 115
4.5.6 使用PopupWindow 117
实例4-26 PopupWindow实例 118
4.6 消息提示 120
4.6.1 使用Toast显示提示消息 120
4.6.2 使用Notification显示状态栏提示 122
实例4-27 Notification实例(NotificationDemo) 123
4.7 菜单 126
4.7.1 选项菜单(Option Menu) 126
实例4-28 选项菜单实例(OptionMenuDemo) 126
4.7.2 上下文菜单(Context Menu) 129
实例4-29 上下文菜单实例(ContextMenuDemo) 130
4.7.3 子菜单(Sub Menu) 132
实例4-30 子菜单实例(SubMenuDemo) 132
4.7.4 创建复选菜单项和单选菜单项 134
实例4-31 复选菜单项和单选菜单项实例(CheckMenuDemo) 135
第5章 Android事件处理 138
5.1 Android事件处理介绍 138
5.2 基于回调的事件处理 138
5.2.1 onKeyDown回调方法 138
实例5-1 onKeyDown回调方法实例(onKeyDownDemo) 139
5.2.2 onKeyUp回调方法 141
5.2.3 onTouchEvent回调方法 141
实例5-2 onTouchEvent回调方法实例(onTouchEventDemo) 142
5.2.4 其他回调方法 144
5.3 基于监听器的事件处理 144
5.3.1 事件监听的处理模型 145
实例5-3 事件监听器模型(EventListenerModel) 145
5.3.2 事件监听器接口 148
实例5-4 OnLongClickListener接口演示(OnLongClickListenerDemo) 149
实例5-5 OnFocusChangeListener接口演示(OnFocusChangeListenerDemo) 151
实例5-6 OnTouchListener接口演示(OnTouchListenerDemo) 153
5.3.3 事件监听器实现方式 155
5.4 响应系统设置事件 159
5.4.1 Configuration类介绍 160
5.4.2 onConfigurationChanged回调方法 160
实例5-7 获取并响应系统设置实例(ConfigurationDemo) 161
5.5 Handler消息传递机制 163
实例5-8 进度条更新实例(HandlerProgress) 164
第6章 数据存储和数据共享 167
6.1 Android数据存储和共享概述 167
6.2 Shared Preferences 167
实例6-1 SharedPreferences存取数据实例(SharedPreferencesDemo) 168
6.3 Files文件存储 171
实例6-2 Files文件操作实例(FilesDemo) 171
6.4 SQLite数据库 175
实例6-3 学生信息数据库(SQLiteStudentInfo) 179
6.5 Content Provider(内容提供器) 187
6.5.1 Content Provider共享数据方法 187
实例6-4 访问联系人信息(ContactsAccess) 189
6.5.2 SQLite应用程序改用Content Provider来公开数据 192
实例6-5 Content Provider实现学生信息数据库访问(StulnfoContentProvider) 192
6.6 Network网络存储 201
第7章 Service(服务程序)和Broadcast Receiver(广播接收器) 202
7.1 Service(服务程序) 202
7.1.1 Service角色 202
7.1.2 启动服务程序 202
7.1.3 Service的生命周期 203
7.1.4 创建服务程序 205
实例7-1 音乐播放服务程序(MusicPlayService) 205
7.2 广播接收器(Broadcast Receiver) 208
7.2.1 广播接收器(Broadcast Receiver)角色 208
7.2.2 实现广播事件 208
7.2.3 使用(广播接收器) 208
实例7-2 Broadcast Receiver实例(BroadcastDemo) 209
7.3 Service和Broadcast Receiver结合使用 212
实例7-3 定时提醒实例(TimerAlarm) 213
第8章 国际化 216
8.1 Android国际化 216
8.2 Android的资源管理 217
8.2.1 创建Android资源 217
8.2.2 创建Android多语言资源 218
8.3 Android多语言范例 219
实例8-1 Android多语言范例(MultiLanguage) 219
第9章 图形与图像处理 221
9.1 使用简单图片 221
9.1.1 使用Drawable对象 221
9.1.2 Bitmap和BitmapFatory 224
实例9-1 BitmapDemo(\Chapter9\BitmapDemo) 224
9.2 利用graphics绘图 225
9.2.1 Paint类 226
9.2.2 Color类 226
9.2.3 Canvas类 227
9.2.4 Path类 227
9.2.5 绘制几何图形 228
实例9-2 绘制几何图形(\Chapter9\GeometricDraw) 228
9.2.6 绘制动态图形 231
实例9-3 动态图形绘制(\Chapter9\DynamicDrawingDemo) 231
9.3 图形特效处理 234
9.3.1 使用Matrix实现图形变换 234
实例9-4 Matrix图形变换实例(\Chapter9\MatrixDemo) 234
9.3.2 使用DrawBitmapMesh实现图像扭曲 236
实例9-5 DrawBitmapMesh实例(\Chapter9\DrawBitmapMeshDemo) 237
9.3.3 使用Shader实现图像渲染 239
实例9-6 Shader实例(\Chapter9\shaderDemo) 240
9.4 Frame动画 242
实例9-7 Frame动画实例(\Chapter9\FrameDemo) 242
9.5 Tween动画 245
9.5.1 使用Interpolator控制动画变化速率 245
9.5.2 Tween动画的实现 246
实例9-8 Tween动画实例(\Chapter9\TweenJavaDemo) 247
9.6 使用sufaceView 252
实例9-9 使用SurfaceView进行绘图(\Chapter9\SurfaceViewDraw) 253
第10章 多媒体应用开发 261
10.1 Android系统多媒体框架 261
10.1.1 OpenCORE框架 261
10.1.2 StageFright框架 262
10.2 音频和视频的播放 263
10.2.1 使用MediaPlayer播放音频 265
实例10-1 简易音乐播放器(\Chapter10\MusicPlayer) 266
10.2.2 使用SoundPool播放音效 271
实例10-2 卡丁车动画和音效(\Chapter10\SoundPoolTest) 272
10.2.3 使用VideoView播放视频 273
实例10-3 视频播放器(\Chapter10\VideoViewDemo) 274
10.2.4 使用MediaPlayer和SurfaceView播放视频 278
实例10-4 自定义视频播放器(\Chapter10\VideoPlayDemo) 279
10.3 音频和视频的录制 284
10.3.1 使用MediaRecorder录制音频 285
实例10-5 简易录音机(AudioRecorder) 286
10.3.2 使用MediaRecorder录制视频 289
实例10-6 视频录制实例(\Chapter10\VideoCapture) 290
10.4 摄像头拍照 293
实例10-7 相机拍照实例(\Chapter10\cameraPhotoDemo) 296
第11章 OpenGL ES与3D应用 301
11.1 OpenGL和OpenGL ES简介 301
11.2 OpenGL ES编程 302
11.2.1 OpenGLES编程类 302
11.2.2 OpenGLES编程框架 304
11.3 3D绘图基础知识 305
11.3.1 3D坐标系 305
11.3.2 顶点(Vertex) 305
11.3.3 边(Edge) 307
11.3.4 面(Face) 307
11.3.5 多边形(Polygon) 307
11.3.6 几何图形绘制(Render) 308
11.3.7 添加图形颜色 309
11.3.8 多边形绘制实例 310
实例11-1 多边形绘制实例(\Chaper11\DrawPolygonDemo) 310
11.4 3D坐标仿射变换 317
11.4.1 平移变换 317
11.4.2 旋转变换 317
11.4.3 缩放变换 318
11.4.4 变换矩阵操作 318
11.4.5 坐标变换实例 319
实例11-2 坐标变换实例(\Chapter11\TransformDemo) 319
11.5 绘制3D图形 321
实例11-3 绘制3D图形(\Chapter11\Draw3DGraph) 322
11.6 纹理渲染 328
实例11-4 纹理渲染实例(\Chapter11\TextureDemo) 330
第12章 Android网络应用 335
12.1 基于TCP协议的网络通信 335
12.1.2 使用ServerSocket建立TCP服务器端 335
12.1.2 使用Socket进行通信 337
实例12-1 Socket实例(\Chapter12\SocketDemo) 337
12.2 使用URL访问网络资源 339
实例12-2 URL访问网络资源实例(\Chapter12\UrlDemo) 339
12.3 使用HTTP访问网络 340
12.3.1 使用HttpURLConnection 341
实例12-3 文件上传下载实例(\Chapter12\HttpUploadDown) 342
12.3.2 使用Apache HttpClient 347
实例12-4 网页登录实例(\Chapter12\HttpLogin) 348
12.4 使用WebView视图 351
12.4.1 使用WebView浏览网页 351
实例12-5 WebView浏览网页实例(\Chapter12\WebViewDemo) 351
12.4.2 使用WebView加载HTML代码 352
实例12-6 使用WebView加载HTML代码实例(\Chapter12\WebViewHtml) 352
第13章 Android手机桌面 354
13.1 Android桌面简介 354
13.2 快捷方式(Shortcut) 355
13.2.1 在应用程序中添加快捷方式 355
实例13-1 在应用程序中添加快捷方式(AddShortcutDemo) 356
13.2.2 向Launcher添加应用程序的快捷方式 358
实例13-2 向Launcher添加应用程序的快捷方式(ShortcutDemo) 358
13.3 窗口小部件(Widget) 360
实例13-3 窗口小部件实例(NoteWidget) 361
13.4 实时文件夹(Live Folder) 364
13.5 壁纸(Wallpaper) 370
实例13-4 动态壁纸实例(LiveWallpaper) 371
13.6 Android 4.0臬面 375
13.6.1 桌面组件的添加方式 375
13.6.2 桌面文件夹 376
第14章 Android传感器应用 377
14.1 Android传感器开发 377
14.2 使用SensorSimulator 379
14.2.1 下载和安装SensorSimulator 379
14.2.2 使用SensorSimulator模拟传感器 381
14.3 Andoird常用传感器 383
14.3.1 加速度传感器Accelarator 383
实例14-1 获取加速度传感器的值(\Chaper14\AccelaratorDemo) 383
14.3.2 方向传感器Orientation 386
14.3.3 磁场传感器Magnetic Field 387
14.3.4 温度传感器Temperature 388
14.3.5 光传感器Light 389
14.4 传感器应用案例—Box2D重力球 389
14.4.1 Box2D物理引擎 390
14.4.2 JBox2D常用类介绍 391
14.4.3 Box2D物理世界模拟 395
14.4.4 Box2D重力球实例 396
实例14-2 Box2D重力球实例(\Chaper14\GravityBall) 397
第15章 GPS定位和Google Maps地图服务 403
15.1 GPS和Google Maps简介 403
15.2 GPS定位服务 403
15.2.1 LocationManager 404
15.2.2 LocationListener 405
15.2.3 Location 405
15.2.4 LocationProvider 405
15.2.5 Criteria 406
15.3 GPS定位功能实现 406
15.3.1 GPS定位程序实现 406
实例15-1 GPS定位实例(\Chapter15\GPSLocation) 408
15.3.2 使用Android模拟器测试GPS定位程序 411
15.4 Google Maps地图应用 412
15.4.1 获取Google地图外部库 412
15.4.2 创建平台为Google APIs的Android模拟器 415
15.4.3 获取Google Maps API Key 416
15.4.4 Google Maps地图应用程序 418
实例15-2 Google地图应用程序实例(\Chapter15\MyGoogleMap) 418
15.5 Google Maps应用扩展 421
15.5.1 Google地图标记 421
实例15-3 Google地图标记实例(\Chapter15\GoogleMapOverlay) 421
15.5.2 根据GPS位置信息显示Google地图 423
实例15-4 根据GPS信息实时更新Google地图实例(\Chapter15\GPSandMap) 424
第16章 Android 4.0新特性 427
16.1 Android 4.0用户新特性 427
16.1.1 精致全新的UI界面 427
16.1.2 改进的多任务切换功能 428
16.1.3 桌面文件夹 428
16.1.4 新的锁屏动作 429
16.1.5 强大的语音输入引擎 429
16.1.6 网络数据流量监控功能 430
16.1.7 强大的图像功能 430
16.1.8 强大的社交和通信功能 432
16.2 Android 4.0开发新特性 433
16.2.1 沟通和共享功能开发新特性 433
16.2.2 全新的媒体处理能力 435
16.2.3 全新的连接类型 436
16.2.4 全新的UI组件及功能 437
16.2.5 全新的输入方式及文本服务 437
16.2.6 增强的辅助功能API 438
16.2.7 高效的网络使用率 438
16.2.8 应用程序及内容安全性 439
16.2.9 增强的企业业务 439
16.3 Android 4.0 API新特性介绍 439
16.3.1 Fragment 440
16.3.2 Action Bar 442
16.3.3 UI界面和视图 446
16.3.4 输入框架 447
16.3.5 传感器设备 448
16.3.6 网络使用 448
16.3.7 媒体(Media) 448
16.3.8 相机(Camera) 449
16.4 Android 4.0 API新特性实例 451
16.4.1 Fragment实例 451
实例16-1 Fragment使用实例(\Chapter16\FragmentDemo) 451
16.4.2 GridLayout实例 455
实例16-2 GridLayout使用实例(\Chapter16\GridLayoutDemo) 455
16.4.3 Switch实例 456
实例16-3 Switch使用实例(\Chapter16\SwitchDemo) 456