本书第1版凭借其符合认知学的内容结构和写作方式而深受读者欢迎,被普遍认为是Android初学者快速和高效掌握Android应用开发能力并提升理论水平的优秀著作。与第1版相比,第2版在技术更新颖,根据最新的Android版本做了更新;内容上更全面,理论部分补充了大量新的内容;细节更完善,不仅修补了第1版存在的瑕疵,而且对案例的呈现形式和实现过程做了优化,更利于读者学习。
全书共分为三个部分。基础篇全面介绍了Android的系统架构、开发环境的搭建、Android应用程序的常用组件,以及开发Android应用前的准备工作。实例篇逐步讲解了一个功能强大的新浪微博客户端的完整实现过程,不仅展示了每个模块的实现效果,而且对实现代码进行了剖析,更重要的是对所案例中所涉及的理论知识的重点做了展开阐述,既便于读者动手实践,又能帮助读者巩固已经掌握的理论知识。高级篇讲解了Android开发中的高级技术,包括各种常用的Android资源、通信功能的开发、数据库、蓝牙与WIFI、第三方程序库、2D绘图技术、OpenGL ES绘图技术、Android的编译,以及Android的性能优化方法和实践。
封面图
目录
- 前言
- 第一部分基础篇—Android开发基础
- 第1章Android应用开发基础 / 2
- 1.1Android的系统构架 / 2
- 1.2Android开发环境搭建 / 3
- 1.2.1安装JDK和配置Java开发环境 / 3
- 1.2.2安装Android SDK / 5
- 1.2.3安装Eclipse插件ADT / 6
- 1.3Android应用程序中的资源 / 7
- 1.4Android的应用程序组件 / 7
- 1.4.1Activity / 8
- 1.4.2Service / 8
- 1.4.3Broadcast Receiver / 8
- 1.4.4Content Provider / 9
- 1.5小结 / 9
- 第2章基于服务的微博照片分享 / 10
- 2.1微博简介 / 10
- 2.2微博开放API / 11
- 2.3Android的服务 / 11
- 2.4编写程序前的准备工作 / 12
- 2.4.1获取Key和Secret / 12
- 2.4.2下载和使用SDK / 13
- 2.5让任何拍照软件都成为微博客户端 / 17
- 2.5.1可以监视目录文件的服务 / 17
- 2.5.2压缩图像 / 20
- 2.5.3发布带图像的微博 / 21
- 2.5.4实现主窗口类 / 24
- 2.6小结 / 26
- 第二部分实例篇—微博客户端开发
- 第3章微博客户端概况 / 28
- 3.1参考客户端 / 28
- 3.1.1新浪微博官方Android客户端 / 28
- 3.1.2网易微博官方Android客户端 / 29
- 3.1.3腾讯微博官方Android客户端 / 30
- 3.2功能模块展示 / 31
- 3.2.1登录 / 31
- 3.2.2首页微博列表 / 31
- 3.2.3发布微博 / 31
- 3.2.4拍照和图像特效处理 / 32
- 3.2.5显示微博详细内容 / 32
- 3.2.6显示评论信息 / 33
- 3.2.7显示其他信息 / 33
- 3.3小结 / 33
- 第4章新浪微博API / 35
- 4.1新浪微博API有哪些功能 / 35
- 4.2微博接口 / 35
- 4.2.1获取公共微博列表(public_timeline) / 35
- 4.2.2获取主页微博列表(home_timeline) / 38
- 4.2.3获取指定用户的微博列表(user_timeline) / 39
- 4.2.4获取@我的微博列表(mentions) / 39
- 4.2.5获取指定的微博信息(show) / 40
- 4.2.6发布不带图像的微博(update) / 40
- 4.2.7发布带图像的微博(upload) / 40
- 4.2.8转发微博(repost) / 41
- 4.2.9删除微博(destroy) / 41
- 4.3评论接口 / 41
- 4.3.1显示某条微博的评论 / 41
- 4.3.2获取当前登录用户收发评论的列表 / 44
- 4.3.3发布一条评论 / 44
- 4.3.4删除一条评论 / 45
- 4.4获取指定用户信息 / 45
- 4.5关系接口 / 47
- 4.5.1获取用户的关注列表 / 47
- 4.5.2获取用户粉丝列表 / 48
- 4.5.3关注和取消某用户 / 48
- 4.6退出登录 / 49
- 4.7收藏接口 / 49
- 4.7.1获取当前用户的收藏列表 / 49
- 4.7.2收藏和取消收藏微博 / 50
- 4.8小结 / 50
- 第5章主界面的设计与实现 / 51
- 5.1启动界面 / 51
- 5.2主界面的实现 / 52
- 5.2.1总布局 / 53
- 5.2.2首页布局 / 53
- 5.2.3信息界面布局 / 55
- 5.2.4动态设置底端按钮 / 57
- 5.3小结 / 59
- 第6章显示首页微博列表 / 60
- 6.1获取和分析微博数据 / 60
- 6.1.1获取首页微博信息 / 60
- 6.1.2分析微博数据 / 63
- 6.2显示首页微博列表 / 72
- 6.2.1在ListView中显示首页微博列表 / 72
- 6.2.2显示认证图像 / 83
- 6.2.3带格式和图像的文本 / 84
- 6.3小结 / 88
- 第7章任务队列 / 89
- 7.1任务队列的核心组件 / 89
- 7.1.1任务处理接口 / 89
- 7.1.2任务存储 / 89
- 7.1.3任务监视 / 91
- 7.2文件下载任务队列 / 95
- 7.2.1文件下载队列的使用方法 / 95
- 7.2.2下载文件—PullFile类 / 97
- 7.3通用任务队列 / 99
- 7.3.1文件下载任务 / 99
- 7.3.2发布微博任务 / 99
- 7.3.3转发微博任务 / 100
- 7.3.4收藏微博任务 / 101
- 7.3.5评论微博任务 / 101
- 7.3.6处理任务的中枢—TaskMan类 / 102
- 7.4小结 / 105
- 第8章发布微博 / 106
- 8.1向服务端提交微博 / 106
- 8.2发布微博的界面布局 / 106
- 8.3添加发布微博任务 / 110
- 8.4辅助功能 / 111
- 8.4.1拍照 / 111
- 8.4.2图像浏览 / 112
- 8.4.3插入话题 / 115
- 8.4.4插入@ / 115
- 8.4.5插入表情字符串 / 115
- 8.5小结 / 117
- 第9章图像特效 / 118
- 9.1图像特效主界面 / 118
- 9.2特效处理框架 / 118
- 9.2.1处理图像的接口 / 119
- 9.2.2如何处理图像 / 119
- 9.3选择图像区域 / 121
- 9.4图像特效详解 / 127
- 9.4.1灰度 / 127
- 9.4.2马赛克 / 131
- 9.4.3截图 / 134
- 9.4.4自由旋转 / 135
- 9.4.5恢复原始图像 / 136
- 9.5发布经过特效处理的图像微博 / 136
- 9.6小结 / 137
- 第10章浏览微博 / 138
- 10.1界面布局 / 138
- 10.1.1显示微博信息 / 141
- 10.1.2浏览大图 / 144
- 10.1.3刷新微博信息 / 144
- 10.2转发微博 / 145
- 10.3评论微博 / 146
- 10.3.1显示评论微博界面 / 146
- 10.3.2显示评论列表 / 147
- 10.4收藏微博 / 150
- 10.5小结 / 150
- 第11章操作数据的Adapter类 / 151
- 11.1添加“刷新”按钮 / 151
- 11.2隐藏“更多”按钮 / 153
- 11.3显示评论列表 / 153
- 11.4小结 / 155
- 第12章显示其他信息 / 156
- 12.1@我 / 156
- 12.1.1获取“@我”信息 / 156
- 12.1.2显示“@我”微博列表 / 157
- 12.2评论 / 160
- 12.2.1获取评论信息 / 161
- 12.2.2显示评论列表 / 162
- 12.3收藏 / 163
- 12.3.1获取收藏微博列表 / 163
- 12.3.2显示收藏微博列表 / 165
- 12.4小结 / 166
- 第13章我的资料 / 167
- 13.1布局设计 / 167
- 13.2获取用户信息 / 169
- 13.3显示当前登录用户信息 / 170
- 13.4小结 / 171
- 第14章微博广场 / 172
- 14.1显示广场功能列表 / 172
- 14.2显示热门微博 / 172
- 14.3显示热门收藏 / 174
- 14.4显示热门评论 / 174
- 14.5小结 / 175
- 第15章新浪微博Android客户端总结 / 176
- 15.1微博SDK / 176
- 15.2Android客户端涉及的类 / 176
- 15.2.1与窗口相关的类 / 176
- 15.2.2工具类 / 176
- 15.2.3任务队列相关的类 / 180
- 15.3小结 / 181
- 第16章签名和发布微博客户端 / 182
- 16.1签名应用程序 / 182
- 16.1.1使用命令行方式进行签名 / 182
- 16.1.2使用ADT插件进行签名 / 183
- 16.2发布微博客户端 / 185
- 16.3小结 / 185
- 第三部分高级篇—Android SDK高级技术
- 第17章Android资源详解 / 188
- 17.1创建资源 / 188
- 17.2访问资源 / 189
- 17.2.1生成资源类文件 / 190
- 17.2.2从代码中访问资源 / 192
- 17.2.3从XML文件中访问资源 / 192
- 17.3在代码中存取资源 / 194
- 17.3.1存取简单资源 / 194
- 17.3.2存取对象资源 / 197
- 17.3.3处理配置变化 / 199
- 17.4本地化 / 200
- 17.4.1建立本地化的资源目录 / 200
- 17.4.2资源目录的命名规则 / 203
- 17.4.3建立别名资源 / 203
- 17.4.4资源目录的优先级 / 205
- 17.5资源类型 / 205
- 17.5.1字符串(String)资源 / 205
- 17.5.2布局(Layout)资源 / 208
- 17.5.3图像(Drawable)资源 / 210
- 17.5.4菜单(Menu)资源 / 220
- 17.5.5动画(Animation)资源 / 221
- 17.5.6风格(Style)资源 / 225
- 17.5.7其他资源 / 226
- 17.6小结 / 228
- 第18章电话、短信与联系人 / 229
- 18.1电话 / 229
- 18.1.1显示拨号界面 / 229
- 18.1.2直接拨打电话 / 229
- 18.1.3控制呼叫转移 / 230
- 18.1.4监听来/去电 / 232
- 18.1.5用程序控制接听和挂断动作 / 235
- 18.1.6获取通话记录 / 237
- 18.2短信和彩信 / 239
- 18.2.1通过系统程序发送短信 / 239
- 18.2.2直接发送短信 / 239
- 18.2.3保存短信发送记录 / 240
- 18.2.4监听短信 / 242
- 18.2.5发送彩信 / 243
- 18.2.6监听彩信 / 244
- 18.2.7显示视频缩略图 / 245
- 18.2.8彩信内容与SMIL协议 / 248
- 18.3联系人 / 258
- 18.3.1查看联系人的内容 / 259
- 18.3.2添加电话到联系人列表 / 260
- 18.3.3修改联系人信息 / 261
- 18.3.4删除联系人信息 / 262
- 18.4小结 / 262
- 第19章数据库 / 263
- 19.1SQLite数据库 / 263
- 19.1.1管理SQLite数据库 / 263
- 19.1.2SQLite数据库基本操作 / 264
- 19.1.3事务 / 266
- 19.1.4核心函数 / 267
- 19.1.5日期和时间函数 / 272
- 19.1.6聚合函数 / 275
- 19.2Android版的SQLite数据库 / 277
- 19.2.1操作数据库 / 277
- 19.2.2升级数据库 / 278
- 19.2.3数据绑定 / 280
- 19.3持久化数据库引擎db4o / 282
- 19.3.1什么是db4o / 282
- 19.3.2下载和安装db4o / 283
- 19.3.3创建和打开数据库 / 283
- 19.3.4操作Java对象 / 283
- 19.4小结 / 286
- 第20章蓝牙与Wi-Fi / 287
- 20.1蓝牙编程 / 287
- 20.1.1蓝牙简介 / 287
- 20.1.2控制蓝牙设备 / 288
- 20.1.3使蓝牙设备可被搜索到 / 289
- 20.1.4搜索蓝牙设备 / 291
- 20.1.5蓝牙设备之间的数据传输 / 294
- 20.2Wi-Fi编程 / 298
- 20.2.1控制Wi-Fi设备 / 298
- 20.2.2获取Wi-Fi信息 / 299
- 20.2.3客户端Socket / 301
- 20.2.4服务端Socket / 301
- 20.2.5移动版的Web服务器实例 / 302
- 20.2.6在手机客户端访问Web服务器 / 307
- 20.3小结 / 308
- 第21章第三方程序库 / 309
- 21.1GTalk客户端 / 309
- 21.1.1XMPP协议简介 / 309
- 21.1.2下载并安装asmack / 309
- 21.1.3登录GTalk服务器 / 310
- 21.1.4获取联系人信息 / 311
- 21.1.5监听联系人是否在线 / 313
- 21.1.6发送聊天消息 / 314
- 21.1.7接收聊天消息 / 315
- 21.2FTP客户端 / 315
- 21.2.1连接与断开FTP服务器 / 316
- 21.2.2获取与改变当前工作目录 / 317
- 21.2.3列出所有的文件和目录 / 317
- 21.2.4建立、重命名、删除指定目录 / 319
- 21.2.5上传、重命名、下载、删除指定文件 / 319
- 21.3绘制图表的程序库AChartEngine / 320
- 21.3.1曲线图 / 320
- 21.3.2条形图 / 324
- 21.3.3离散点图 / 324
- 21.3.4区域图 / 325
- 21.3.5饼图 / 327
- 21.4小结 / 327
- 第22章编译在Android中的应用 / 328
- 22.1JavaCC使用入门 / 328
- 22.1.1JavaCC下载和安装 / 329
- 22.1.2用JavaCC生成第一个分析器 / 329
- 22.2JavaCC语法 / 332
- 22.3JavaCC实战—计算器 / 333
- 22.3.1生成计算表达式的分析器源代码 / 333
- 22.3.2编写计算器的主程序 / 339
- 22.4小结 / 343
- 第23章Android SDK的2D绘图技术 / 344
- 23.1绘图基础 / 344
- 23.1.1绘制点 / 344
- 23.1.2绘制直线 / 346
- 23.1.3绘制三角形 / 346
- 23.1.4绘制矩形和菱形 / 347
- 23.1.5绘制圆、弧和椭圆 / 349
- 23.1.6绘制文字 / 350
- 23.2高级绘图技术 / 350
- 23.2.1在画布上旋转图像 / 351
- 23.2.2在EditText控件上绘制图像和文本 / 351
- 23.2.3动画效果 / 353
- 23.3绘图实战—电子罗盘 / 354
- 23.4SurfaceView类 / 356
- 23.5小结 / 358
- 第24章OpenGL ES绘图技术 / 359
- 24.1OpenGL ES简介 / 359
- 24.2构建OpenGL ES框架 / 359
- 24.3用OpenGL ES绘制2D图形 / 360
- 24.3.1三角形 / 360
- 24.3.2矩形 / 362
- 24.3.3为图形上色 / 363
- 24.4OpenGL ES实战—旋转立方体 / 365
- 24.4.1绘制立方体 / 365
- 24.4.2使立方体旋转起来 / 366
- 24.5小结 / 367
- 第25章性能优化 / 368
- 25.1性能优化的基础知识 / 368
- 25.2编写Java程序的最优化原则 / 369
- 25.2.1用静态工厂方法代替构造方法 / 369
- 25.2.2避免创建重复的对象 / 369
- 25.2.3防止内存泄漏 / 371
- 25.2.4接口只用于定义类型 / 372
- 25.2.5返回零长度的集合而不是null / 372
- 25.2.6通过接口引用对象 / 373
- 25.3避免ANR / 373
- 25.4性能检测 / 374
- 25.4.1执行时间测试 / 374
- 25.4.2内存消耗测试 / 376
- 25.4.3测试性能的工具traceview / 377
- 25.5小结 / 378