第1章 正式开发前的准备 1
1.1 Windows下安装Java环境JDK 1
1.1.1 实例说明 1
1.1.2 具体实现 2
1.1.3 特别提醒——检测是否
安装成功 3
1.2 在Windows环境下安装Eclipse 4
1.2.1 实例说明 4
1.2.2 具体实现 4
1.2.3 特别提醒——为Eclipse
建立快捷方式 5
1.3 在Windows环境下集成安装
Eclipse和Android SDK 6
1.3.1 实例说明 6
1.3.2 具体实现 6
1.3.3 特别提醒——不同的
SDK版本 8
1.4 在Windows环境下安装ADT 8
1.4.1 实例说明 8
1.4.2 具体实现 8
1.4.3 特别提醒——不用担心
安装过程慢 9
1.5 将Android SDK和Eclipse相关联 9
1.5.1 实例说明 10
1.5.2 具体实现 10
1.5.3 特别提醒——不关联启动
SDK的方法 10
1.6 验证Android开发环境 10
1.6.1 实例说明 11
1.6.2 具体实现 11
1.6.3 特别提醒——快速运行
Android的诀窍 11
1.7 使用CMD方式创建Android
虚拟设备 12
1.7.1 实例说明 12
1.7.2 具体实现 12
1.7.3 特别提醒 13
1.8 使用图形界面方式创建AVD
模拟器 14
1.8.1 实例说明 14
1.8.2 具体实现 14
1.8.3 特别提醒——删除/修改AVD 15
1.9 手动更新Android SDK 16
1.9.1 实例说明 16
1.9.2 具体实现 16
1.9.3 特别提醒——自定义选择
安装的SDK 18
1.10 单独下载的方式来更新
Android SDK 18
1.10.1 实例说明 19
1.10.2 具体实现 19
1.10.3 特别提醒——快速安装
Android SDK的诀窍 19
1.11 在Linux环境下搭建Android平台 19
1.11.1 实例说明 19
1.11.2 具体实现 20
1.11.3 特别提醒 20
1.12 苹果Mac环境下搭建Android平台 21
1.12.1 实例说明 21
1.12.2 具体实现 21
1.12.3 特别提醒——都是一个原理 22
1.13 搭建过程中的常见错误 22
1.13.1 实例说明 23
1.13.2 最常见的3个错误 23
1.13.3 特别提醒——其他错误 24
1.14 第一个Android程序 25
1.14.1 实例说明 26
1.14.2 具体实现 26
1.14.3 特别提醒——解决模拟器运行
时间长而引发的错误 27
1.15 向Eclipse中导入Android程 28
1.15.1 实例说明 28
1.15.2 具体实现 28
1.15.3 特别提醒——一次向Eclipse
中导入多个Android程序 29
1.16 断点调试Android程序 30
1.16.1 实例说明 30
1.16.2 具体实现 30
1.16.3 特别提醒——其他调试方法 31
第2章 界面布局 32
2.1 使用线性布局(LinearLayout) 32
2.1.1 实例说明 32
2.1.2 具体实现 32
2.1.3 特别提醒——布局类型
的继承 33
2.2 使用相对布局(Relative Layout) 34
2.2.1 实例说明 34
2.2.2 具体实现 34
2.2.3 特别提醒——RelativeLayout
效果结构 35
2.3 使用表格布局(Table Layout) 36
2.3.1 实例说明 36
2.3.2 具体实现 36
2.3.3 特别提醒——使用表格布局
的注意事项 37
2.4 使用绝对布局(AbsoluteLayout) 37
2.4.1 实例说明 37
2.4.2 具体实现 37
2.4.3 特别提醒——为什么不推荐
使用AbsoluteLayout 37
2.5 使用标签布局(TabLayout) 38
2.5.1 实例说明 38
2.5.2 具体实现 38
2.5.3 特别提醒——计算器的
升级理念 39
2.6 使用层布局(FrameLayout) 39
2.6.1 实例说明 39
2.6.2 具体实现 39
2.6.3 特别提醒——层与层的覆盖 40
2.7 演示Layout布局的综合应用 40
2.7.1 实例说明 40
2.7.2 具体实现 40
2.7.3 特别提醒——设置的图片
不能太大 44
2.8 创建一个桌面组件Widget 45
2.8.1 实例说明 45
2.8.2 具体实现 45
2.8.3 特别提醒——其他的实例 45
2.9 在屏幕中实现一个按钮效果 45
2.9.1 实例说明 45
2.9.2 具体实现 46
2.9.3 特别提醒——更加漂亮
的按钮 46
2.10 在屏幕中显示文字 47
2.10.1 实例说明 47
2.10.2 具体实现 47
2.10.3 特别提醒——Color属性
代表的颜色 49
2.11 设置手机屏幕中的字体 49
2.11.1 实例说明 49
2.11.2 具体实现 50
2.11.3 特别提醒——更改TextView
文字的颜色 51
2.12 在屏幕中显示编辑框 51
2.12.1 实例说明 51
2.12.2 具体实现 51
2.12.3 特别提醒——限制文本框
中文字字数 52
2.13 在屏幕中显示复选框 53
2.13.1 实例说明 54
2.13.2 具体实现 54
2.14.3 特别提醒——RadioButton
(单选框)控件 54
2.14 在屏幕中显示单选框 55
2.14.1 实例说明 55
2.14.2 具体实现 55
2.14.3 特别提醒——按钮的
不同状态 55
2.15 在屏幕中显示下拉列表框 56
2.15.1 实例说明 56
2.15.2 具体实现 56
2.15.3 特别提醒——Spinner的
属性和方法 58
2.16 在屏幕中实现自动输入文本效果 58
2.16.1 实例说明 58
2.16.2 具体实现 58
2.16.3 特别提醒——下拉框的
雾化效果 59
2.17 使用日期选择器控件DatePicker 59
2.17.1 实例说明 59
2.17.2 具体实现 60
2.17.3 特别提醒——控件
DatePicker中的方法 60
2.18 使用时间选择器控件TimePicker 61
2.18.1 实例说明 61
2.18.2 具体实现 61
2.18.3 特别提醒——在屏幕中
同时显示日期和时间 61
2.19 在屏幕内实现滚动效果 64
2.19.1 实例说明 64
2.19.2 具体实现 64
2.19.3 特别提醒——解决ScrollView
控件中的内容不能完整显示
的问题 64
2.20 在屏幕内实现进度条效果 65
2.20.1 实例说明 65
2.20.2 具体实现 65
2.20.3 特别提醒——为控件
Progressbar设置样式 66
2.21 在屏幕内使用拖动条功能 67
2.21.1 实例说明 67
2.21.2 具体实现 67
2.21.3 特别提醒——在拖动条中
显示提示文字 67
2.22 在屏幕内使用评分组件 67
2.22.1 实例说明 68
2.22.2 具体实现 68
2.22.3 特别提醒——使用RatingBar
控件的流程 68
2.23 在屏幕内显示一幅图片 69
2.23.1 实例说明 69
2.23.2 具体实现 69
2.23.3 特别提醒——制作一个相框 70
2.24 设置一幅图片当作按钮 71
2.24.1 实例说明 71
2.24.2 具体实现 71
2.24.3 特别提醒——图片按钮控件
的事件响应 72
2.25 实现类似QQ空间的照片效果 73
2.25.1 实例说明 73
2.25.2 具体实现 73
2.25.3 特别提醒——ImageSwitcher
控件的3种方法 74
2.26 使用网格视图控件布局屏幕 74
2.26.1 实例说明 74
2.26.2 具体实现 75
2.26.3 特别提醒——升级实例 76
2.27 在屏幕内实现多个标签栏样式
的效果 76
2.27.1 实例说明 76
2.27.2 具体实现 76
2.27.3 特别提醒——TabView的
标准用法格式 77
2.28 实现一个3行布局 77
2.28.1 实例说明 77
2.28.2 具体实现 77
2.28.3 特别提醒——升级实例 78
2.29 实现书架展示效果 79
2.29.1 实例说明 79
2.29.2 具体实现 79
2.29.3 特别提醒——升级实例 80
2.30 实现树形菜单效果 80
2.30.1 实例说明 80
2.30.2 具体实现 81
2.30.3 特别提醒——其他控件
的功能 82
2.31 实现一个精美的登录界面 82
2.31.1 实例说明 82
2.31.2 具体实现 82
2.31.3 特别提醒——实例升级 84
第3章 基本控件应用 85
3.1 使用EditText控件和setOnKeyListener
事件实现文本处理 85
3.1.1 实例说明 85
3.1.2 具体实现 85
3.1.3 特别提醒——实现文字过滤 86
3.2 在屏幕中实现一个背景图片按钮 86
3.2.1 实例说明 86
3.2.2 具体实现 87
3.2.3 特别提醒——“res/drawable”
目录的作用 88
3.3 使用Toast实现提醒 88
3.3.1 实例说明 88
3.3.2 具体实现 88
3.3.3 特别提醒——Toast的优势 90
3.4 用RadioGroup控件实现选择处理 91
3.4.1 实例说明 91
3.4.2 具体实现 91
3.4.3 特别提醒——RadioGroup
控件的特殊作用 92
3.5 使用CheckBox实现一个购物清单 92
3.5.1 实例说明 92
3.5.2 具体实现 92
3.5.3 特别提醒——应用触摸屏
技术 94
3.6 使用CheckBox实现同意条款效果 94
3.6.1 实例说明 94
3.6.2 具体实现 95
3.6.3 特别提醒——处理CheckBox
的状态 96
3.7 使用ImageView控件实现相框效果 96
3.7.1 实例说明 96
3.7.2 具体实现 97
3.7.3 特别提醒——ImageButton
的按钮切换 98
3.8 使用Spinner实现选择处理 98
3.8.1 实例说明 98
3.8.2 具体实现 99
3.8.3 特别提醒——设置下拉菜单
中的TextView 100
3.9 使用Gallery控件实现个人
相簿功能 101
3.9.1 实例说明 101
3.9.2 具体实现 101
3.9.3 特别提醒——设置Gallery
图片的宽高 102
3.10 在手机中实现文件搜索功能 103
3.10.1 实例说明 103
3.10.2 具体实现 103
3.10.3 特别提醒——搜索子目录 104
3.11 使用ImageButton控件实现按钮
置换功能 104
3.11.1 实例说明 104
3.11.2 具体实现 105
3.11.3 特别提醒——操作显示
的默认图片 105
3.12 使用AnalogClock实现一个
时钟效果 106
3.12.1 实例说明 106
3.12.2 具体实现 106
3.12.3 特别提醒——3种常用的
System Clock 107
3.13 在手机屏幕中实现不同的
进度条效果 108
3.13.1 实例说明 108
3.13.2 具体实现 108
3.13.3 特别提醒——在进度条中
的4种不同风格 110
3.14 在屏幕中手动选择日期和时间 110
3.14.1 实例说明 111
3.14.2 具体实现 111
3.14.3 特别提醒——控件
TimePicker中的主要方法 112
3.15 动态排版手机屏幕 113
3.15.1 实例说明 113
3.15.2 具体实现 113
3.15.3 特别提醒——总结UI
界面布局 114
3.16 使用ListActivity实现界面布局 115
3.16.1 实例说明 115
3.16.2 具体实现 116
3.16.3 特别提醒——ListActivity
的用法总结 117
3.17 加载手机磁盘中的文件 118
3.17.1 实例说明 118
3.17.2 具体实现 118
3.17.3 特别提醒——解析Android
中的图片素材目录 119
3.18 使用菜单控件MENU 119
3.18.1 实例说明 119
3.18.2 具体实现 119
3.18.3 特别提醒——Android系统
中的3种菜单类型 121
3.19 使用SimpleAdapter实现ListView
效果 122
3.19.1 实例说明 122
3.19.2 具体实现 122
3.19.3 特别提醒——ArrayAdapter
接受一个数组或者List
作为参数 123
3.20 在屏幕中实现抽屉样式效果 123
3.20.1 实例说明 123
3.20.2 具体实现 123
3.20.3 特别提醒——实现可拖拉
的抽屉效果 126
3.21 在屏幕中演示使用多种对话框 129
3.21.1 实例说明 129
3.21.2 具体实现 130
3.21.3 特别提醒——自定义消除AlertDialog的黑、白边框 133
3.22 联合使用Toast和Notification
实现提醒 134
3.22.1 实例说明 134
3.22.2 具体实现 135
3.22.3 特别提醒——更新
通知信息 139
3.23 动态添加/删除Spinner菜单 139
3.23.1 实例说明 139
3.23.2 具体实现 139
3.23.3 特别提醒——改变
TextView内容 141
3.24 自定义一个Android控件 142
3.24.1 实例说明 142
3.24.2 具体实现 142
3.24.3 特别提醒——将属性值绑定
到控件的基本步骤 144
3.25 设置控件的外观样式 145
3.25.1 实例说明 145
3.25.2 具体实现 145
3.25.3 特别提醒——查看Android
开源代码 146
3.26 使用自定义控件在屏幕中绘制
一条虚线 147
3.26.1 实例说明 148
3.26.2 具体实现 148
3.26.3 特别提醒——总结实现
自定义控件的流程 148
3.27 实现自定义组合控件和
自定义对话框 149
3.27.1 实例说明 149
3.27.2 具体实现 149
3.27.3 特别提醒——读者们
汲取笔者的教训 152
3.28 使用OptionsMenu在屏幕中
自定义自己的菜单 152
3.28.1 实例说明 152
3.28.2 具体实现 153
3.28.3 特别提醒——编写
自定义样式 154
3.29 使用ExpandableListView实现
手风琴效果 155
3.29.1 实例说明 155
3.29.2 具体实现 155
3.29.3 特别提醒——ExpandableListAdapter接口 156
3.30 基于自定义适配器的ExpandableListView 156
3.30.1 实例说明 157
3.30.2 具体实现 157
3.30.3 特别提醒——实现规整
的布局 158
3.31 使用Chronometer在屏幕中
实现定时器效果 160
3.31.1 实例说明 160
3.31.2 具体实现 160
3.31.3 特别提醒——进一步
设置时间 161
3.32 使用控件SlidingDrawer在屏幕中
实现滑动式抽屉的效果 161
3.32.1 实例说明 161
3.32.2 具体实现 162
3.32.3 特别提醒——布局
SlidingDrawer里面的控件 163
3.33 在EditText插入QQ表情 163
3.33.1 实例说明 163
3.33.2 具体实现 163
3.33.3 特别提醒——删除
表情图片的思路 163
3.34 为Button设计样式 164
3.34.1 实例说明 164
3.34.2 具体实现 164
3.34.3 特别提醒——Android
如何设置控件的样式 164
3.35 为控件自定义样式 164
3.35.1 实例说明 164
3.35.2 具体实现 165
3.35.3 特别提醒——和样式
设置相关的属性和文件 165
3.36 制作一个有秒针的时钟 165
3.36.1 实例说明 165
3.36.2 具体实现 165
3.36.3 特别提醒——要如何
随时都知道时间的改变 167
第4章 屏幕显示应用 168
4.1 在屏幕中输出显示一段文字 168
4.1.1 实例说明 168
4.1.2 具体实现 168
4.1.3 特别提醒——处理超出
屏幕宽度的文字 169
4.2 更改屏幕背景颜色 169
4.2.1 实例说明 169
4.2.2 具体实现 169
4.2.3 特别提醒——“res/values”
目录保存设置颜色 171
4.3 更改屏幕中的文字颜色 171
4.3.1 实例说明 171
4.3.2 具体实现 171
4.3.3 特别提醒——遵循MVC
开发模式 172
4.4 置换屏幕中TextView文字的颜色 172
4.4.1 实例说明 172
4.4.2 具体实现 173
4.4.3 特别提醒——使用转义字符 173
4.5 获取手机屏幕的分辨率 173
4.5.1 实例说明 173
4.5.2 具体实现 174
4.5.3 特别提醒——DisplayMetrics
的用法 174
4.6 设置屏幕中的文字样式 175
4.6.1 实例说明 175
4.6.2 具体实现 175
4.6.3 特别提醒——更改Layout
中对象的外观 176
4.7 响应按钮事件 176
4.7.1 实例说明 177
4.7.2 具体实现 177
4.7.3 特别提醒——两个注意事项 177
4.8 实现屏幕界面的转换 178
4.8.1 实例说明 178
4.8.2 具体实现 178
4.8.3 特别提醒——setContentView
转换屏幕界面 179
4.9 在一个Activity中调用另一个
Activity 179
4.9.1 实例说明 179
4.9.2 具体实现 180
4.9.3 特别提醒——Intent的作用 181
4.10 计算标准体重 181
4.10.1 实例说明 181
4.10.2 具体实现 182
4.10.3 特别提醒——Activity
的原理 184
4.11 将数据返回到前一个Activity 184
4.11.1 实例说明 184
4.11.2 具体实现 184
4.11.3 特别提醒——重新返回
给主Activity1 187
4.12 单击按钮后改变文字颜色 187
4.12.1 实例说明 188
4.12.2 具体实现 188
4.12.3 特别提醒——使用HTML
控制颜色 188
4.13 设置手机屏幕中文本的字体 189
4.13.1 实例说明 189
4.13.2 具体实现 189
4.13.3 特别提醒——使用字体
的问题 190
4.14 在手机屏幕中实现拖动图片特效 190
4.14.1 实例说明 190
4.14.2 具体实现 190
4.14.3 特别提醒——导入外部图片
作为内置图 191
4.15 制作一个简单的计算器 191
4.15.1 实例说明 192
4.15.2 具体实现 192
4.15.3 特别提醒——计算小数 193
4.16 在屏幕中实现一个About(关于)
信息效果 193
4.16.1 实例说明 193
4.16.2 具体实现 193
4.16.3 特别提醒——实现一个
确认对话框 194
4.17 在手机屏幕中实现程序加载效果 195
4.17.1 实例说明 195
4.17.2 具体实现 195
4.17.3 特别提醒——ProgressDialog
类 196
4.18 创建一个有选择项的对话框 196
4.18.1 实例说明 196
4.18.2 具体实现 197
4.18.3 特别提醒——AlertDialog.
Builder的内部组成 197
4.19 改变手机的主题 198
4.19.1 实例说明 198
4.19.2 具体实现 198
4.19.3 特别提醒——设置Style 199
4.20 在屏幕中自动显示输入的数据 199
4.20.1 实例说明 199
4.20.2 具体实现 199
4.20.3 特别提醒——链接字符串
的妙用 200
4.21 实现手机振动效果 200
4.21.1 实例说明 200
4.21.2 具体实现 201
4.21.3 特别提醒——Vibrator对象
实现振动 203
4.22 实现图文提醒效果 203
4.22.1 实例说明 203
4.22.2 具体实现 203
4.22.3 特别提醒——带图提醒
的妙用 205
4.23 实现类似于MSN/QQ的状态效果 205
4.23.1 实例说明 205
4.23.2 具体实现 206
4.23.3 特别提醒——使用
NotificationManager的
基本步骤 207
4.24 检索手机中的通讯录 208
4.24.1 实例说明 209
4.24.2 具体实现 209
4.24.3 特别提醒——URI介绍和
ContentResolver的用法
剖析 211
4.25 管理手机系统中的文件 212
4.25.1 实例说明 213
4.25.2 具体实现 213
4.25.3 特别提醒——同时显示
文件名、图标和文件夹名 216
4.26 清除、还原手机桌面 216
4.26.1 实例说明 216
4.26.2 具体实现 216
4.26.3 特别提醒——类
ContextWrapper的根类 217
4.27 “修改/删除”手机中的文件 217
4.27.1 实例说明 218
4.27.2 具体实现 218
4.27.3 特别提醒——I/O类的
操作流程 223
4.28 获取当前运行程序的路径 224
4.28.1 实例说明 224
4.28.2 具体实现 225
4.28.3 特别提醒——两种表示
目录的方式 227
4.29 获取手机内SIM卡的信息 227
4.29.1 实例说明 227
4.29.2 具体实现 228
4.29.3 特别提醒——SIM卡
的意义 230
4.30 查看当前系统中正在运行的程序 231
4.30.1 实例说明 231
4.30.2 具体实现 231
4.30.3 特别提醒——AndroidManifest.xml中
的权限 233
4.31 修改手机屏幕的显示方向 236
4.31.1 实例说明 236
4.31.2 具体实现 236
4.31.3 特别提醒——切换和不
切换的实现方法 239
第5章 自动为您服务 240
5.1 获取手机屏幕的分辨率 240
5.1.1 实例说明 240
5.1.2 具体实现 240
5.1.3 特别提醒——一个模拟器
模拟短信操作 242
5.2 获取手机剩余的电池容量 243
5.2.1 实例说明 243
5.2.2 具体实现 243
5.2.3 特别提醒——Reseiver
的作用 244
5.3 来电时自动发送信息提醒 245
5.3.1 实例说明 245
5.3.2 具体实现 245
5.3.3 特别提醒——TelephonyManager
和PhoneStateListener 247
5.4 获取手机中存储卡的容量 248
5.4.1 实例说明 248
5.4.2 具体实现 248
5.4.3 特别提醒——使用FAT32
格式的磁盘镜像作为SD
卡的模拟 249
5.5 操作存储卡和内存卡中的信息 250
5.5.1 实例说明 250
5.5.2 具体实现 250
5.5.3 特别提醒——管理SD卡
中的内容 255
5.6 设置闹钟 255
5.6.1 实例说明 255
5.6.2 具体实现 255
5.6.3 特别提醒——类
AlarmManager的作用 259
5.7 设置黑名单来电自动静音 259
5.7.1 实例说明 260
5.7.2 具体实现 260
5.7.3 特别提醒——检测Android
系统是否静音 262
5.8 定时更换手机桌面背景 262
5.8.1 实例说明 262
5.8.2 具体实现 262
5.8.3 特别提醒——AlarmManager
的原理 268
5.9 开机后自动显示一个界面 269
5.9.1 实例说明 269
5.9.2 具体实现 269
5.9.3 特别提醒——开机发送
BOOT_COMPLETED
广播信息 270
5.10 替换手机屏幕的背景图片 270
5.10.1 实例说明 270
5.10.2 具体实现 270
5.10.3 特别提醒——维持图片
的宽高比 272
5.11 在手机屏幕中拖动一个按钮 272
5.11.1 实例说明 273
5.11.2 具体实现 273
5.11.3 特别提醒——通过keyCode
来判断A~Z的按键 275
5.12 自动控制系统服务 276
5.12.1 实例说明 276
5.12.2 具体实现 276
5.12.3 特别提醒——Service
的作用 278
5.13 手机背面朝上时自动启动
震动模式 278
5.13.1 实例说明 278
5.13.2 具体实现 278
5.13.3 特别提醒——
registerListener()的参数 282
5.14 AlarmManager的启动和关闭 283
5.14.1 实例说明 283
5.14.2 具体实现 283
5.14.3 特别提醒——闹钟服务 284
5.15 黑名单拦截机制 284
5.15.1 实例说明 284
5.15.2 具体实现 285
5.15.3 特别提醒——Android
的通话机制 287
5.16 开机后启动一个服务 288
5.16.1 实例说明 288
5.16.2 具体实现 288
5.16.3 特别提醒——开机自动
启动的原理 288
第6章 数据存储服务 289
6.1 在屏幕中显示SharedPreferences
存储的信息 289
6.1.1 实例说明 289
6.1.2 具体实现 289
6.1.3 特别提醒——存放数据
的路径 290
6.2 数据的添加和删除 290
6.2.1 实例说明 290
6.2.2 具体实现 290
6.2.3 特别提醒——Android支持
5种打印输出级别 294
6.3 演示ContentProvider的用法 294
6.3.1 实例说明 294
6.3.2 具体实现 294
6.3.3 特别提醒——ContentResolver
提供的接口 295
6.4 使用SQLite编写一个日记本 296
6.4.1 实例说明 296
6.4.2 具体实现 296
6.4.3 特别提醒——SimpleCursor
Adapter和ArrayAdapter
的对比 301
6.5 使用Content Provider实现
日记本功能 301
6.5.1 实例说明 301
6.5.2 具体实现 301
6.5.3 特别提醒——Content Provider
和ContentResolver中的Uri 310
6.6 保存用户的信息 310
6.6.1 实例说明 310
6.6.2 具体实现 310
6.6.3 特别提醒——XML文件
的形式保存数据 312
6.7 使用文件保存数据 312
6.7.1 实例说明 312
6.7.2 具体实现 313
6.7.3 特别提醒——方法
openFileOutput() 314
6.8 将网上图片保存在SD卡中
并显示出来 315
6.8.1 实例说明 315
6.8.2 具体实现 316
6.8.3 特别提醒——总结数据
存储方式 317
6.9 读取上次保存的信息 319
6.9.1 实例说明 319
6.9.2 具体实现 319
6.9.3 特别提醒——使用
SharedPreferences保存
key-value对的步骤 320
6.10 使用Content Provider存储信息 320
6.10.1 实例说明 320
6.10.2 具体实现 320
6.10.3 特别提醒——框架内部
的操作 322
6.11 使用SQLite操作数据 322
6.11.1 实例说明 322
6.11.2 具体实现 322
6.11.3 特别提醒——使用SQLiteDatabase操作
SQLite数据库 324
6.12 一个SQLite管理程序 324
6.12.1 实例说明 324
6.12.2 具体实现 325
第7章 电话和短信应用 327
7.1 实现一个简单的拨号程序 327
7.1.1 实例说明 327
7.1.2 具体实现 327
7.1.3 特别提醒——IntentFilter
实现拨号 329
7.2 实现发送短信功能 330
7.2.1 实例说明 330
7.2.2 具体实现 330
7.2.3 特别提醒——包android.
telephony简介 331
7.3 实现一个按钮拨号程序 332
7.3.1 实例说明 332
7.3.2 具体实现 332
7.3.3 特别提醒——一段通用的
验证电话号码的代码 334
7.4 一个发送短信系统 334
7.4.1 实例说明 334
7.4.2 具体实现 334
7.4.3 特别提醒——SmsManager类 337
7.5 实现屏幕触控拨号程序 338
7.5.1 实例说明 338
7.5.2 具体实现 338
7.5.3 特别提醒——将Action
动作定义成常数 338
7.6 实现短信群发功能 339
7.6.1 实例说明 339
7.6.2 具体实现 339
7.6.3 特别提醒——Android的
群组功能 341
7.7 在发送短信时实现E-mail邮件通知 341
7.7.1 实例说明 342
7.7.2 具体实现 342
7.7.3 特别提醒——通过Intent机制
协助应用间的交互与通讯 345
7.8 来电后自动发送邮件通知 345
7.8.1 实例说明 345
7.8.2 具体实现 345
7.8.3 特别提醒——模拟器的问题 347
7.9 监听短信是否发送成功 347
7.9.1 实例说明 347
7.9.2 具体实现 347
7.9.3 特别提醒——发送短信
的状态 350
7.10 监控手机拨接状态 350
7.10.1 实例说明 351
7.10.2 具体实现 351
7.10.3 特别提醒——getSystemService
的返回对象 353
7.11 监控收取的短信中是否含有
某关键字 353
7.11.1 实例说明 353
7.11.2 具体实现 354
7.11.3 特别提醒——不可以直接
唤醒原来的主Activity 359
第8章 图形图像处理 361
8.1 在手机屏幕中绘制一个矩形 361
8.1.1 实例说明 361
8.1.2 具体实现 361
8.1.3 特别提醒——类Paint中
的方法 363
8.2 在手机屏幕中绘制一个画布 363
8.2.1 实例说明 364
8.2.2 具体实现 364
8.2.3 特别提醒——生成图片
水印效果 365
8.3 在手机屏幕中绘制各种图形 365
8.3.1 实例说明 366
8.3.2 具体实现 366
8.3.3 特别提醒——save方法
和restore方法 368
8.4 在手机屏幕中模拟实现水纹效果 368
8.4.1 实例说明 368
8.4.2 实例说明 369
8.4.3 特别提醒——缩放位图 371
8.5 在手机屏幕中渲染一个几何图形 371
8.5.1 实例说明 371
8.5.2 具体实现 371
8.5.3 特别提醒——类Shader中
的子类 373
8.6 在手机屏幕中实现动画效果 373
8.6.1 实例说明 373
8.6.2 具体实现 373
8.6.3 特别提醒——Tween动画的
4种动画效果 375
8.7 在手机屏幕中实现Frame动画效果 375
8.7.1 实例说明 375
8.7.2 具体实现 375
8.7.3 特别提醒——实现Frame
动画的方法 376
8.8 使用Matrix实现图片缩放 376
8.8.1 实例说明 376
8.8.2 具体实现 377
8.8.3 特别提醒——4种缩放位图
的基本方法 379
8.9 旋转屏幕中的图片 380
8.9.1 实例说明 380
8.9.2 具体实现 380
8.9.3 特别提醒——用Matrix或
Canvas旋转位图 382
8.10 实现天上移动星星的效果 382
8.10.1 实例说明 382
8.10.2 具体实现 382
8.10.3 特别提醒——OpenGL技术 385
8.11 构建一个模拟3D场景 385
8.11.1 实例说明 385
8.11.2 具体实现 385
8.11.3 特别提醒——分析相关
的底层代码 387
8.12 实现浮动的旗帜效果 388
8.12.1 实例说明 388
8.12.2 具体实现 388
8.12.3 特别提醒——用OpenGL ES
绘图的基本流程 389
8.13 在屏幕中显示多个物体 390
8.13.1 实例说明 390
8.13.2 具体实现 390
8.13.3 特别提醒——
类FloatBuffer 392
8.14 模拟实现粒子系统效果 392
8.14.1 实例说明 392
8.14.2 具体实现 392
8.14.3 特别提醒——粒子系统的
实现过程 394
8.15 移动手机屏幕中的图片 394
8.15.1 实例说明 395
8.15.2 具体实现 395
8.15.3 特别提醒——配对使用
save和restore 397
8.16 在Canvas画布中绘制字符串 398
8.16.1 实例说明 398
8.16.2 具体实现 398
8.16.3 特别提醒——设置画布
的属性 403
8.17 在手机屏幕中移动一个不断
变换颜色的图形 403
8.17.1 实例说明 403
8.17.2 具体实现 404
8.17.3 特别提醒——SurfaceView
的用法 406
8.18 在手机屏幕中实现一个图片移动
的动画效果 406
8.18.1 实例说明 406
8.18.2 具体实现 406
8.18.3 特别提醒——在SurfaceHolder.Callback回调
接口中的常用方法 408
8.19 绘制一个三维圆柱体 409
8.19.1 实例说明 409
8.19.2 具体实现 409
8.19.3 特别提醒——展开后的
圆柱体 415
8.20 在手机屏幕中混合图像 415
8.20.1 实例说明 416
8.20.2 具体实现 416
8.20.3 特别提醒——常用的
混合方式 419
8.21 显示图片的宽和高 419
8.21.1 实例说明 420
8.21.2 具体实现 420
8.21.3 特别提醒——使用BitmapDrawable或BitmapFactory获取资源
中的位图 421
8.22 绘制各种空心图形、实心图形
和渐变图形 422
8.22.1 实例说明 422
8.22.2 具体实现 422
8.22.3 特别提醒——Canvas与
ImageView对比 424
8.23 编写一个屏保程序 424
8.23.1 实例说明 425
8.23.2 具体实现 425
8.23.3 特别提醒——
4个Runnable 430
8.24 在屏幕中通过单击的方式
移动图片 430
8.24.1 实例说明 430
8.24.2 具体实现 430
8.24.3 特别提醒——Bitmap的
两点重要应用 433
8.25 显示存储卡中的图片 433
8.25.1 实例说明 433
8.25.2 具体实现 433
8.25.3 特别提醒——测试存储卡 435
8.26 显示系统内的图片信息 436
8.26.1 实例说明 436
8.26.2 具体实现 436
8.26.3 特别提醒——BitmapDrawable
操作位图 437
8.27 实现图片阴影效果和影子效果 438
8.27.1 实例说明 438
8.27.2 具体实现 438
8.27.3 特别提醒——设置字体
的阴影 439
第9章 互联网应用 441
9.1 传递HTTP参数 441
9.1.1 实例说明 441
9.1.2 具体实现 441
9.1.3 特别提醒——在Android
系统中打开链接 444
9.2 在手机中浏览网页 444
9.2.1 实例说明 444
9.2.2 具体实现 444
9.2.3 特别提醒——loadUrl方法
访问网页 445
9.3 在手机中使用HTML程序 445
9.3.1 实例说明 445
9.3.2 具体实现 445
9.3.3 特别提醒——开发Android
网络项的注意事项 446
9.4 使用内置浏览器打开网页 446
9.4.1 实例说明 446
9.4.2 具体实现 446
9.4.3 特别提醒——WebSettings
设置WebView属性 448
9.5 在屏幕中显示QQ空间中的图片 448
9.5.1 实例说明 448
9.5.2 具体实现 448
9.5.3 特别提醒——Gallery控件
在游戏中的应用 450
9.6 从网络中下载图片作为屏幕背景 450
9.6.1 实例说明 450
9.6.2 具体实现 450
9.6.3 特别提醒——将InputStream
转换为String 452
9.7 将文件上传至服务器 452
9.7.1 实例说明 452
9.7.2 具体实现 453
9.7.3 特别提醒——表单上传
程序实现文件上传 454
9.8 实现一个RSS系统 455
9.8.1 实例说明 455
9.8.2 具体实现 455
9.8.3 特别提醒——RSS2.0的
语法规则 461
9.9 远程下载并安装一个软件 462
9.9.1 实例说明 462
9.9.2 具体实现 463
9.9.3 特别提醒——APK
文件介绍 466
9.10 开发一个移动微博发布器 469
9.10.1 实例说明 469
9.10.2 具体实现 470
9.10.3 特别提醒——乐多博客
的接口 473
9.11 解析和生成XML 474
9.11.1 实例说明 474
9.11.2 具体实现 474
9.11.3 特别提醒——SAX解析器 475
9.12 获取网络中的图片 476
9.12.1 实例说明 476
9.12.2 具体实现 476
9.12.3 特别提醒——Android中
获取网络图片的3种方法 477
9.13 获取网页的代码 477
9.13.1 实例说明 478
9.13.2 具体实现 478
9.13.3 特别提醒——Android获取
网页数据的方法总结 478
9.14 获取JSON数据 480
9.14.1 实例说明 480
9.14.2 具体实现 480
9.14.3 特别提醒——Android获取
JSON并输出显示的方法 480
9.15 多线程下载 481
9.15.1 实例说明 481
9.15.2 具体实现 481
9.15.3 特别提醒——多线程
下载文件的过程 484
9.16 get方式传递数据 485
9.16.1 实例说明 485
9.16.2 具体实现 485
9.16.3 特别提醒——解决
乱码问题 486
9.17 post方式传递数据 486
9.17.1 实例说明 486
9.17.2 具体实现 486
9.17.3 特别提醒——get方式和
post方式的区别 487
9.18 调用WebService的数据 487
9.18.1 实例说明 487
9.18.2 具体实现 487
9.18.3 特别提醒——WebService
介绍 488
第10章 多媒体应用 489
10.1 调节手机音量的大小 489
10.1.1 实例说明 489
10.1.2 具体实现 489
10.1.3 特别提醒——AudioManager
管理手机声音 492
10.2 在手机中播放MP3文件 492
10.2.1 实例说明 492
10.2.2 具体实现 492
10.2.3 特别提醒——播放手机
卡里的音乐或者网络中
的流媒体 495
10.3 编写一个录音程序 495
10.3.1 实例说明 495
10.3.2 具体实现 496
10.3.3 特别提醒——Android的
开源多媒体框架 500
10.4 在手机中实现相机预览和
拍照功能 500
10.4.1 实例说明 500
10.4.2 具体实现 500
10.4.3 特别提醒——使用摄像头
的方法 505
10.5 在手机中播放影片 507
10.5.1 实例说明 507
10.5.2 具体实现 507
10.5.3 特别提醒——VideoView类
的构造函数 509
10.6 编程的方式设置手机中的铃声 509
10.6.1 实例说明 509
10.6.2 具体实现 510
10.6.3 特别提醒——设置
3种声音 512
10.7 播放远程网络中的MP3 512
10.7.1 实例说明 512
10.7.2 具体实现 512
10.7.3 特别提醒——Runnable并
不一定是新开一个线程 517
10.8 从网络中远程下载手机铃声 517
10.8.1 实例说明 517
10.8.2 具体实现 518
10.8.3 特别提醒——使用
Notification的注意事项 522
10.9 远程观看网络中的3GP视频 522
10.9.1 实例说明 522
10.9.2 具体实现 522
10.9.3 特别提醒——Gallery调用
MediaProvider的数据 527
10.10 在屏幕中播放GIF动画 528
10.10.1 实例说明 528
10.10.2 具体实现 528
10.10.3 特别提醒——GIF动画
和帧播放 532
10.11 编写一个简单的音乐播放器 533
10.11.1 实例说明 533
10.11.2 具体实现 533
10.11.3 特别提醒——SD卡支持
ContentProvider接口 536
10.12 在手机中播放MP4视频 536
10.12.1 实例说明 536
10.12.2 具体实现 536
10.12.3 特别提醒——VideoView
中的常用方法 537
第11章 地图服务 538
11.1 获取当前位置的坐标 538
11.1.1 实例说明 538
11.1.2 具体实现 538
11.1.3 特别提醒——android.location
的定位功能 540
11.2 使用谷歌地图 540
11.2.1 实例说明 540
11.2.2 具体实现 542
11.2.3 特别提醒——使用Map API
密钥的基本流程 544
11.3 输入一个坐标后在地图中
实现定位 546
11.3.1 实例说明 546
11.3.2 具体实现 546
11.3.3 特别提醒——类GeoPoint
的方法 548
11.4 在手机中实现地址查询 548
11.4.1 实例说明 548
11.4.2 具体实现 548
11.4.3 特别提醒——Google Map
API解密 551
11.5 实现路径导航 551
11.5.1 实例说明 551
11.5.2 具体实现 551
11.5.3 特别提醒——起点和
终点的设置 555
11.6 移动手机时自动实现位置更新 556
11.6.1 实例说明 556
11.6.2 具体实现 556
11.6.3 特别提醒——判断GPS模块
是否存在或开启 559
11.7 在地图中绘制线路并计算距离 559
11.7.1 实例说明 559
11.7.2 具体实现 560
11.7.3 特别提醒——JavaScript
overlay类型 564
11.8 在谷歌地图中显示指定的位置 564
11.8.1 实例说明 564
11.8.2 具体实现 564
11.8.3 特别提醒——Android的
位置访问 566
11.9 在屏幕中显示当前位置的
详细信息 566
11.9.1 实例说明 566
11.9.2 具体实现 566
11.9.3 特别提醒——Android中
实现定位的地图 569
11.10 快速查询某个位置 569
11.10.1 实例说明 569
11.10.2 具体实现 569
11.10.3 特别提醒——谷歌地图
的3种视图模式 570
11.11 在手机地图中查询一个地址 571
11.11.1 实例说明 571
11.11.2 具体实现 571
11.11.3 特别提醒——选择
中文输入法 572
第12章 Google API应用 573
12.1 模拟验证官方账号 573
12.1.1 实例说明 573
12.1.2 具体实现 573
12.1.3 特别提醒——Google Account
的组成 578
12.2 实现谷歌搜索功能 578
12.2.1 实例说明 578
12.2.2 具体实现 579
12.2.3 特别提醒——使用
Google Search API的流程 582
12.3 使用Google Chart API
生成二维条码 582
12.3.1 实例说明 582
12.3.2 具体实现 582
12.3.3 特别提醒——Google Chart
API的用法详解 585
12.4 在手机中编写一个翻译软件 586
12.4.1 实例说明 586
12.4.2 具体实现 586
12.4.3 特别提醒——Ajax语言
的API 587
12.5 在手机屏幕中生成二维条码 588
12.5.1 实例说明 588
12.5.2 具体实现 588
12.5.3 特别提醒——DisplayMetircs
处理分辨率问题 591
12.6 引用qrcode项目实现二维条码 591
12.6.1 实例说明 591
12.6.2 具体实现 591
12.6.3 特别提醒——Android拍照
的两种方式 598
第13章 游戏应用 599
13.1 五子棋游戏 599
13.1.1 实例说明 599
13.1.2 具体实现 599
13.2 益智类游戏——魔塔 605
13.2.1 实例说明 605
13.2.2 具体实现 605
13.2.3 特别提醒——一款游戏
产品受到的限制 620
13.3 一个简单的贪吃蛇游戏 620
13.3.1 实例说明 620
13.3.2 具体实现 621
13.3.3 特别提醒——贪吃蛇
游戏的基本思路 624
13.4 扑克游戏 625
13.4.1 实例说明 625
13.4.2 具体实现 625
13.4.3 特别提醒——游戏的
大纲策划 628
13.5 扫雷游戏 629
13.5.1 实例说明 629
13.5.2 具体实现 630
13.5.3 特别提醒——用“?”
标记空白 635
13.6 体育竞技类游戏——疯狂足球 635
13.6.1 实例说明 635
13.6.2 具体实现 636
13.6.3 特别提醒——做好
准备工作 638
13.7 象棋游戏 639
13.7.1 实例说明 639
13.7.2 具体实现 639
13.8 21点游戏 641
13.8.1 实例说明 642
13.8.2 具体实现 642
13.8.3 特别提醒——棋牌游戏
发展现状 644
13.9 俄罗斯方块游戏 644
13.9.1 实例说明 644
13.9.2 具体实现 644
13.9.3 特别提醒——经典
棋牌类游戏 646
13.10 蚂蚁迷呀 647
13.10.1 实例说明 647
13.10.2 具体实现 647
13.11 推箱子游戏 650
13.11.1 实例说明 650
13.11.2 具体实现 650
13.11.3 特别提醒——SurfaceView
的作用 653
13.12 更复杂的扫雷游戏 653
13.12.1 实例说明 653
13.12.2 具体实现 653
13.12.3 特别提醒——关于扫雷
游戏的一点说明 658
第14章 程序优化 659
14.1
标签在UI界面中
的优化作用 659
14.1.1 实例说明 659
14.1.2 具体实现 659
14.1.3 特别提醒——使用
标签的注意事项 661
14.2 测试计算机的性能 661
14.2.1 实例说明 661
14.2.2 具体实现 661
14.2.3 特别提醒——使用
动态代理 664
14.3 测试内存性能 664
14.3.1 实例说明 664
14.3.2 具体实现 664
14.3.3 特别提醒——命名问题 665
14.4 Android Layout优化 666
14.4.1 实例说明 666
14.4.2 具体实现 666
14.4.3 特别提醒——Layout布局
的注意事项 667
14.5 优化Bitmap图片 667
14.5.1 实例说明 667
14.5.2 具体实现 667
14.5.3 特别提醒——Options
中的属性 669
14.6 优化Android模拟器 669
14.6.1 实例说明 669
14.6.2 具体实现 669
14.6.3 特别提醒——开启动画
效果选项 671
第15章 平板电脑应用开发 672
15.1 设置平板程序开发环境 672
15.1.1 实例说明 672
15.1.2 具体实现 672
15.1.3 特别提醒——平板电脑
的分辨率 673
15.2 在平板电脑中开发一个
音乐播放器 674
15.2.1 实例说明 674
15.2.2 具体实现 674
15.2.3 特别提醒——在平板电脑中
开发一个视频播放程序 678
15.3 浏览指定的网页 679
15.3.1 实例说明 679
15.3.2 具体实现 679
15.3.3 特别提醒——设置样式
自适应 682
15.4 开发一个天气预报系统 683
15.4.1 实例说明 683
15.4.2 具体实现 683
15.4.3 特别提醒——XML
实现方式 689
15.5 使用文件存储数据的方法
保存音乐状态 689
15.5.1 实例说明 690
15.5.2 具体实现 690
15.5.3 特别提醒——修改
平板电脑程序 692
15.6 勇敢派递员游戏 692
15.6.1 实例说明 692
15.6.2 具体实现 692
15.6.3 特别提醒——解读
AndEngine框架 693
15.7 愤怒的小鸟游戏 694
15.7.1 实例说明 694
15.7.2 具体实现 694
15.7.3 特别提醒——AndEngine
的基本运行流程 698
15.8 仓库管理系统 698
15.8.1 实例说明 698
15.8.2 具体实现 698
15.8.3 特别提醒——删除供应商
信息步骤及处理流程 702
第16章 移动Web应用 704
16.1 在Android模拟器测试网页 704
16.1.1 实例说明 704
16.1.2 具体实现 704
16.1.3 特别提醒——移动设备
将占据未来计算机市场 705
16.2 编写第一个网页 705
16.2.1 实例说明 705
16.2.2 具体实现 705
16.2.3 特别提醒——格式化一级
和二级导航的
元素 709
16.3 使用jQuery设计网页 709
16.3.1 实例说明 709
16.3.2 具体实现 709
16.3.3 特别提醒——jQuery介绍 711
16.4 使用页面模板 711
16.4.1 实例说明 711
16.4.2 具体实现 711
16.4.3 特别提醒——组件的
增强样式 712
16.5 使用多页面模板 712
16.5.1 实例说明 713
16.5.2 具体实现 713
16.5.3 特别提醒——设置内部
页面的页面标题 713
16.6 使用Ajax驱动导航 714
16.6.1 实例说明 714
16.6.2 具体实现 714
16.6.3 特别提醒——分析jQuery
Mobile的处理流程 715
16.7 开发一个Ajax网页 716
16.7.1 实例说明 716
16.7.2 具体实现 716
16.7.3 特别提醒——智能手机
数量猛增 719
16.8 实现基本对话框效果 720
16.8.1 实例说明 720
16.8.2 具体实现 720
16.8.3 特别提醒——使用操作表 721
16.9 实现警告框 721
16.9.1 实例说明 721
16.9.2 具体实现 722
16.9.3 特别提醒——使用
多选项操作表 723
16.10 实现竖屏和横屏自适应效果 723
16.10.1 实例说明 723
16.10.2 具体实现 723
16.10.3 特别提醒——Webkit
的媒体扩展 724
16.11 实现全屏显示效果 724
16.11.1 实例说明 724
16.11.2 具体实现 724
16.11.3 特别提醒——可以用于
定位页眉的3种样式 725
16.12 实现只有图标的按钮效果 725
16.12.1 实例说明 726
16.12.2 具体实现 726
16.12.3 特别提醒——在页眉中
使用分段控件 727
16.13 实现回退按钮效果 727
16.13.1 实例说明 727
16.13.2 具体实现 727
16.13.3 特别提醒——在页眉中
添加回退链接 728
16.14 在表单中输入文本 728
16.14.1 实例说明 729
16.14.2 具体实现 729
16.14.3 特别提醒——将输入
字段与其语义类型关联 730
16.15 动态输入文本 731
16.15.1 实例说明 731
16.15.2 具体实现 731
16.15.3 特别提醒——使用
选择菜单 732
16.16 实现一个自定义选择菜单效果 732
16.16.1 实例说明 732
16.16.2 具体实现 732
16.16.3 特别提醒——占位符选项 734
16.17 使用内置列表 734
16.17.1 实例说明 734
16.17.2 具体实现 734
16.17.3 特别提醒——使用
列表分割线 735
16.18 实现缩略图列表效果 735
16.18.1 实例说明 735
16.18.2 具体实现 735
16.18.3 特别提醒——使用拆分
按钮列表 737
16.19 实现可折叠设置效果 737
16.19.1 实例说明 737
16.19.2 具体实现 737
16.19.3 特别提醒——使用CSS
设置样式 739
16.20 使用网络连接API 739
16.20.1 实例说明 739
16.20.2 具体实现 739
16.20.3 特别提醒——使用
指南针API 740
16.21 预加载一个网页 740
16.21.1 实例说明 740
16.21.2 具体实现 741
16.21.3 特别提醒——
Pagebeforechange事件 741
16.22 开发一个Web版的电话簿系统 741
16.22.1 实例说明 742
16.22.2 具体实现 742
16.22.3 特别提醒——使用
页面初始化事件 Page
initialization events 746
16.23 搭建PhoneGap开发环境 746
16.23.1 实例说明 746
16.23.2 具体实现 747
16.23.3 特别提醒——PhoneGap
移动Web开发的步骤 748
16.24 创建基于PhoneGap的
HeIIoWorld程序 748
16.24.1 实例说明 748
16.24.2 具体实现 748
16.24.3 特别提醒——
使用PhoneGap API 752
第17章 创意开发 753
17.1 开发一个蓝牙遥控器 753
17.1.1 实例说明 753
17.1.2 具体实现 753
17.1.3 特别提醒——蓝牙在模拟
器上发生问题 758
17.2 手机模拟实现跋杯仪式 758
17.2.1 实例说明 758
17.2.2 具体实现 759
17.2.3 特别提醒——使用
传感器技术 763
17.3 随时检测我们当前的加速度 763
17.3.1 实例说明 763
17.3.2 具体实现 763
17.3.3 特别提醒——安装SensorSimulator工具 765
17.4 语音识别系统 767
17.4.1 实例说明 767
17.4.2 具体实现 767
17.4.3 特别提醒——谷歌的语音
识别技术 768
17.5 在Android中使用JavaScript 769
17.5.1 实例说明 769
17.5.2 具体实现 769
17.5.3 特别提醒——在Android
中做网页 771
17.6 动态更换壁纸 771
17.6.1 实例说明 771
17.6.2 具体实现 771
17.6.3 特别提醒——Service
BroadcastReceiver与
AlarmManager 772
17.7 二维扫描码程序 772
17.7.1 实例说明 772
17.7.2 具体实现 773
17.7.3 特别提醒——Zxing
开源项目 775
17.8 随身日记本 775
17.8.1 实例说明 775
17.8.2 具体实现 775
17.8.3 特别提醒——Cursor对象
的常用方法 777