首页>参考读物>计算机科学与技术>软件与程序设计

Android应用开发实战
作者 : 李宁 著
出版日期 : 2011-11-24
ISBN : 978-7-111-36260-9
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 438
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书将基于最新版的Android撰写,作者不仅有丰富的Android开发经验,而且也有这方面的专著出版,销量和评价都还不错。
全书以“基础理论+实战案例+高级技巧”为组织内容的结构,其中最出彩的部分是实战部分,全书以一个经典的综合案例——新浪微博客户端贯穿全书,以迭代的方式完整地重现了整个案例的开发过程,极具操作性,配合前后的基础理论和高级技巧,读者在实践的同时还能将理论知识融会贯通。全书主要内容一共分为三大部分:准备篇简明扼要地讲解了Android开发的基础知识,并为第二部分实战篇的内容打下了基础,将微博客户端的框架搭了起来,同时想起介绍了微博的API;实战篇以迭代的方式完整的重现了从微博客户端的架构到微博客户端的测试的整个过程,极具实战性,更重要的是展现了Android应用开发的流程和思想;高级篇讲解了网络通信、多线程、2D/3D动画、特殊输入和输出、性能优化等高级内容,使全书的内容得到了升华。

图书特色

这是一本实战性的进阶参考书,它摒弃了传统同类书的内容组织方式,没有以基础理论开篇,而是直接以一个实际案例引导读者开始动手实践。这个案例是一个功能强大的新浪微博客户端,作者将微博客户端的实现分成了若干模块,逐步对各个模块的实现进行了演示和分析。感兴趣的读者可以根据书中的指引来实现这个案例,在这个过程中既可以获得大型Android应用开发的经验,又能巩固基础理论知识,迅速成为一位有经验的Android开发者。
—— Android中文论坛 

当我们学习一种新的软件开发技术时,究竟如何才能迅速上手?传统的观点认为:首先应该系统地学习理论知识,然后找一些案例来操练。这种“先理论后实践”的方法肯定没有错,但是否是唯一途经,值得商榷。经过采访大量初学者后发现,其实很少有人真正有耐心去系统学习理论知识,大部分人一开始就想从实际的案例入手,一边实践,一边学习理论。实践证明,这种方式也是十分有效的,本书便是在这种指导思想下创作的。如果你有其他平台的开发经验,如果你对Android的理论知识不熟悉,没有关系,你可以直接从本书中的案例入手。做完本书中的案例后,你不仅能掌握Android应用开发的方法和思路,而且对它的理论也会有一个全面的了解。对于注重实战的读者而言,本书不可多得。 
—— Android开发者社区

如果你已经对开发Android应用必备的基本理论知识有所了解,想迅速获得开发实际应用的能力和经验,那么本书就是为你准备的。本书以新浪微博客户端为驱动,以迭代的方式讲解了它的整个开发过程。如果你按照书中的步骤重现这个案例,不仅能了解大型Android应用的开发流程,而且还能进一步巩固案例开发中涉及的理论知识。掌握了本书中的这个案例及其相关知识后,你应该具备中级水平了。为了使你的水平进一步提升,本书还讲解了大量高级的理论知识,为你成为高级Android开发者奠定基础。 
—— 51CTO

图书前言

为什么要写这本书
  几年前开始接触Android时就被Android自由开发的精神所感染。虽然Android在诞生之初曾在iPhone的阴影下沉寂了很长时间,也受到很多的质疑,但随着加入Android阵营的手机厂商、软件开发商、电信运营商和个人开发者的增多,Android的势头也逐渐赶上并超过了iPhone,成为占有率第一的移动操作系统。
  由于Android发展迅速,导致了就业市场对Android开发人员的需求量猛增。然而,很多企业需要的是拥有实践经验的开发人员。刚毕业的大学生一般没有企业要求的实践经验,而培训机构的高昂培训费又令他们望而却步。尽管可以通过很多Android书籍中的小例子积累一些经验,但这些例子毕竟有限,有的也不完整,根本达不到企业所要求的水平。笔者在参与公司的面试过程中多次遇到了这些问题。为此,笔者特意选择了一个完整的项目新浪微博客户端作为本书的核心来讲解,其中涉及大部分的Android技术。读者通过仔细研究这个项目的实现方法以及本书提供的源代码,可以大大增加自己的实践经验。为了使读者获得更多的Android知识,本书还重点介绍了几项Android SDK中常用的技术,为读者提供实践经验外的理论储备。
读者对象
   想增加Android实践经验的Android初学者
   想从事Android开发工作的在校或即将毕业的大学生
   有Java基础,想进入移动领域的开发人员
   想进一步提高技术和实践能力的开发人员
   开设Android课程的大专院校和培训机构
   所有对Android感兴趣的读者
如何阅读本书
  本书分为三大部分:
  第一部分为基础篇,介绍了Android开发的基础知识,除此之外,还介绍了如何使用新浪微博SDK开发客户端程序,并给出一个简单的例子供读者练习。
  第二部分为实例篇,通过一个新浪微博客户端程序介绍如何使用Android技术和新浪微博SDK开发一个完整的应用程序。这部分相对独立,如果你是一名有经验的Android开发人员,能够理解和使用Android开发技术,那么可以直接阅读这部分内容。但如果你是一名Android初学者,请一定从第1章开始学习。
  第三部分为高级篇,重点介绍了Android SDK中一些常用的高级技术。例如Android资源、电话和短信的处理、数据库、蓝牙、2D和3D绘图、编译器在Android中的应用等。读者可以通过这部分内容,进一步提高Android的理论和实践能力。
  本书的大部分章节都提供了源代码(由于篇幅有限,书中只展示了核心代码,完整的源代码可以在网上下载),建议读者先阅读本书的内容,如果仍然不理解书中的理论和代码,可以将完整的源代码导入Eclipse中,运行并调试这些代码。
  在下载本书的源代码后,可以按下面的方法将Android工程导入Eclipse。
  单击Eclipse的【File】→【Import】菜单项,打开【Import】对话框,选择【Existing Projects into Workspace】节点,如图1所示。单击【Next】按钮进入下一个页面后,单击【Browse...】按钮选择要导入的Android工程,如图2所示。最后单击【Finish】按钮即可导入Android工程。
      
 图1 选择【Existing Projects into Workspace】节点        图2 选择要导入的工程
勘误和支持
  除封面署名外,参加本书编写工作的还有赵华振、李斌锋、邓斌、戚祥、于伟、皮文星、陈育春、陆正武、虞晓东、张恒汝、高喆、刘威、刘冉、付志涛、宗杰、王大平、李振捷、李波、张鹏、管西京、闫芳、王玉芹、王秀明、杨振珂。
  由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,笔者特意创建了一个在线答疑和发布勘误的论坛http://books.51happyblog.com,读者可以将书中的错误、建议、技术问题发布在相关的版页,同时也请关注本论坛发布的本书相关信息。书中的全部源代码除可以从机工新阅读网站(www.cmpreading.com)下载外,还可以从这个论坛下载。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱techcast@126.com。期待得到你们的真挚反馈。
致谢
  感谢所有在本书写作过程中给予我指导、帮助和鼓励的朋友,尤其是机械工业出版社华章分社的编辑杨福川和白宇,他们不仅对本书提出了宝贵的写作建议,而且还对本书进行了仔细的审阅。
  感谢一直以来信任、鼓励、支持我的家人和朋友。
  感谢eoeAndroid、移动开发者社区的朋友对我技术上的帮助。
  谨以此书献给我最亲爱的家人,以及众多热爱Android的朋友们!

李宁(银河使者)  
2011年8月于中国沈阳

上架指导

计算机\程序设计

封底文字

全书以“基础理论+实战案例+高级技巧”为组织内容的结构,以一个经典的综合案例——新浪微博客户端贯穿全书,以迭代的方式完整地重现了整个案例的开发过程,极具操作性,配合前后的基础理论和高级技巧,读者在实践的同时还能将理论知识融会贯通。

作者简介

李宁 著:李宁 资深软件开发工程师,从事软件开发10余年,经验十分丰富。Android/Ophone开发先驱,代表作品有新浪微博客户端(Android版)、来电无忧(Android版)、多功能日历(Android版)等。活跃于CSDN、博客园、eoeandroid等社区,并担任eoeandroid开发版块版主。此外,还精通.NET、Java、C++、Delphi等技术,曾经多次在微软组织的技术大赛中获奖,近期关注HTML 5。他还是一位有经验的技术作家,著有《Android/Ophone开发完全讲义和《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS。

图书目录

前 言
第一部分 基础篇—Android开发基础
第1章 Android应用开发基础 / 2
1.1 Android的系统构架 / 2
1.2 Android开发环境搭建 / 3
1.2.1 安装JDK和配置Java开发环境 / 3
1.2.2 安装Android SDK / 4
1.2.3 安装Eclipse插件ADT / 6
1.3 Android应用程序中的资源 / 7
1.4 Android的应用程序组件 / 8
1.4.1 Activity(Android的窗体) / 8
1.4.2 Service(服务) / 9
1.4.3 Broadcast Receiver(广播接收器) / 9
1.4.4 Content Provider(内容提供者) / 10
1.5 小结 / 10
第2章 开发前的准备工作 / 11
2.1 建立Android工程 / 11
2.2 引用新浪微博SDK / 12
2.3 引用第三方类库 / 12
2.4 跨工程调试新浪微博SDK / 12
2.5 异步访问API / 13
2.5.1 使用SDK本身的异步功能 / 14
2.5.2 为SDK自定义异步功能 / 15
2.6 小结 / 18
第3章 实现一个简单的微博客户端 / 19
3.1 编写Android的服务 / 19
3.2 让任何拍照软件都成为微博客户端 / 19
3.2.1 可以监视目录文件的服务 / 20
3.2.2 发布带图像的微博 / 23
3.3 小结 / 25
第二部分 实例篇—微博客户端开发
第4章 微博客户端概况 / 28
4.1 参考客户端 / 28
4.1.1 新浪微博官方Android客户端 / 28
4.1.2 网易微博官方Android客户端 / 30
4.1.3 腾讯微博官方Android客户端 / 30
4.2 功能模块展示 / 31
4.2.1 登录 / 31
4.2.2 账户管理 / 31
4.2.3 微博列表 / 32
4.2.4 私信列表 / 32
4.2.5 撰写微博 / 32
4.2.6 图像渲染 / 33
4.2.7 转发、评论与收藏微博 / 33
4.2.8 搜索微博和用户 / 33
4.3 小结 / 34
第5章 新浪微博API详解 / 35
5.1 新浪微博API有哪些功能 / 35
5.2 使用新浪微博API开发前的准备工作 / 36
5.2.1 申请新浪微博应用程序 / 36
5.2.2 访问和测试API / 37
5.2.3 测试新浪微博SDK / 40
5.3 身份认证 / 43
5.3.1 Basic认证 / 43
5.3.2 OAuth认证 / 44
5.4 利用新浪微博SDK获取微博消息 / 46
5.4.1 获取公共微博消息 / 46
5.4.2 获取登录用户首页的微博消息 / 48
5.4.3 获取当前用户发布的微博消息 / 50
5.4.4 获取@提到我的微博消息 / 50
5.4.5 获取当前用户的评论列表 / 51
5.4.6 获取指定微博的评论列表 / 52
5.4.7 获取微博的评论数和转发数 / 53
5.4.8 获取用户相关消息 / 53
5.5 更新微博及其相关内容 / 54
5.5.1 发布文字微博 / 54
5.5.2 发布图像微博 / 55
5.5.3 评论微博 / 56
5.5.4 回复评论 / 56
5.5.5 转发微博 / 58
5.6 新浪微博API的搜索功能  / 59
5.6.1 搜索用户 / 59
5.6.2 搜索微博 / 59
5.7 小结 / 60
第6章 用户登录与用户注册 / 61
6.1 设计登录界面 / 61
6.1.1 登录界面的布局 / 61
6.1.2 登录界面的装载模式 / 63
6.2 事件处理机制 / 64
6.2.1 编写事件处理类 / 65
6.2.2 扩展微博事件处理 / 66
6.3 用户登录 / 69
6.3.1 响应用户登录事件 / 69
6.3.2 用户登录成功 / 70
6.3.3 用户登录失败 / 71
6.4 用户注册 / 72
6.5 关注作者微博 / 72
6.6 小结 / 72
第7章 首页微博列表 / 73
7.1 主界面设计 / 73
7.1.1 主界面布局 / 73
7.1.2 微博列表项布局 / 77
7.1.3 装载主界面 / 78
7.2 实现系统工具类 / 81
7.2.1 NotificationProcess类(处理通知列表) / 81
7.2.2 SystemDBService类(操作数据库) / 85
7.2.3 HappyBlogConfig类(读写配置文件) / 87
7.2.4 ProcessTasks类(处理返回数据) / 88
7.3 系统初始化 / 90
7.3.1 初始化SystemDBService对象 / 90
7.3.2 为每个账号创建MyMicroBlogAsync对象 / 92
7.3.3 初始化处理微博列表的对象 / 93
7.4 装载首页微博数据 / 94
7.4.1 显示微博数据 / 94
7.4.2 装载头像和微博图像 / 96
7.5 小结 / 99
第8章 切换微博列表 / 100
8.1 显示公共微博列表 / 100
8.2 显示我的微博列表 / 104
8.3 显示@提到我的微博列表 / 105
8.4 刷新当前的微博列表 / 106
8.5 小结 / 106
第9章 显示其他列表信息 / 107
9.1 显示我的所有评论列表 / 107
9.2 显示我发出的评论列表 / 109
9.3 显示我的收藏列表 / 110
9.4 显示私信列表 / 111
9.5 小结 / 113
第10章 账号管理 / 114
10.1 账号管理主界面 / 114
10.2 添加账号 / 116
10.3 删除账号 / 118
10.4 设置主账号 / 118
10.5 同步账号 / 119
10.6 注销 / 119
10.7 小结 / 121
第11章 撰写和发布微博 / 122
11.1 发布文字微博 / 122
11.2 发布带图像的微博 / 124
11.2.1 手机拍照 / 125
11.2.2 从相册中获得图像 / 126
11.2.3 删除图像 / 127
11.2.4 发布图像微博 / 127
11.3 微博的辅助输入工具 / 127
11.3.1 语音录入 / 127
11.3.2 插入表情 / 129
11.3.3 插入话题 / 130
11.4 小结 / 131
第12章 处理微博与评论 / 132
12.1 与微博相关的操作 / 132
12.1.1 评论微博 / 132
12.1.2 转发微博 / 135
12.1.3 删除微博 / 137
12.1.4 收藏微博 / 138
12.1.5 以大图方式浏览微博图像 / 139
12.1.6 图像另存为与图像分享 / 139
12.2 查看微博的详细内容 / 146
12.3 显示与回复评论 / 148
12.4 小结 / 149
第13章 图像特效 / 150
13.1 图像特效主界面 / 150
13.2 特效处理框架 / 150
13.2.1 处理图像的接口 / 151
13.2.2 如何处理图像 / 151
13.3 选择图像区域 / 153
13.4 图像特效详解 / 160
13.4.1 灰度 / 160
13.4.2 马赛克 / 165
13.4.3 截图 / 168
13.4.4 自由旋转 / 169
13.4.5 恢复原始图像 / 170
13.5 发布经过特效处理的图像微博 / 170
13.6 小结 / 171
第14章 搜索微博与搜索用户 / 173
14.1 搜索界面布局 / 173
14.2 实现JSON格式的搜索API / 174
14.3 搜索微博 / 177
14.4 搜索用户 / 178
14.5 小结 / 181
第15章 个性化设置 / 182
15.1 设置主题 / 182
15.1.1 主题目录列表 / 182
15.1.2 主题图像 / 186
15.1.3 设置主题背景图 / 192
15.2 设置背景颜色和透明度 / 194
15.3 设置文字颜色 / 198
15.4 小结 / 204
第16章 签名和发布微博客户端 / 205
16.1 签名应用程序 / 205
16.1.1 使用命令行方式进行签名 / 205
16.1.2 使用ADT插件进行签名 / 206
16.2 发布微博客户端 / 207
16.3 小结 / 208
第三部分 高级篇—Android SDK高级技术
第17章 Android资源详解 / 210
17.1 创建资源 / 210
17.2 访问资源 / 211
17.2.1 生成资源类文件 / 212
17.2.2 从代码中访问资源 / 214
17.2.3 从XML文件中访问资源 / 214
17.3 在代码中存取资源 / 216
17.3.1 存取简单资源 / 216
17.3.2 存取对象资源 / 219
17.3.3 处理配置变化 / 221
17.4 本地化 / 222
17.4.1 建立本地化的资源目录 / 222
17.4.2 资源目录的命名规则 / 225
17.4.3 建立别名资源 / 225
17.4.4 资源目录的优先级 / 227
17.5 资源类型 / 227
17.5.1 字符串(String)资源 / 227
17.5.2 布局(Layout)资源 / 230
17.5.3 图像(Drawable)资源 / 232
17.5.4 菜单(Menu)资源 / 242
17.5.5 动画(Animation)资源 / 243
17.5.6 风格(Style)资源 / 247
17.5.7 其他资源 / 248
17.6 小结 / 250
第18章 电话、短信与联系人 / 251
18.1 电话 / 251
18.1.1 显示拨号界面 / 251
18.1.2 直接拨打电话 / 251
18.1.3 控制呼叫转移 / 252
18.1.4 监听来/去电 / 254
18.1.5 用程序控制接听和挂断动作 / 257
18.1.6 获取通话记录 / 259
18.2 短信和彩信 / 261
18.2.1 通过系统程序发送短信 / 261
18.2.2 直接发送短信 / 261
18.2.3 保存短信发送记录 / 262
18.2.4 监听短信 / 264
18.2.5 发送彩信 / 265
18.2.6 监听彩信 / 266
18.2.7 显示视频缩略图 / 267
18.2.8 彩信内容与SMIL协议 / 270
18.3 联系人 / 280
18.3.1 查看联系人的内容 / 281
18.3.2 添加电话到联系人列表 / 282
18.3.3 修改联系人信息 / 283
18.3.4 删除联系人信息 / 284
18.4 小结 / 284
第19章 数据库 / 285
19.1 SQLite数据库 / 285
19.1.1 管理SQLite数据库 / 285
19.1.2 SQLite数据库基本操作 / 286
19.1.3 事务 / 288
19.1.4 核心函数 / 289
19.1.5 日期和时间函数 / 294
19.1.6 聚合函数 / 297
19.2 Android版的SQLite数据库 / 299
19.2.1 操作数据库 / 299
19.2.2 升级数据库 / 300
19.2.3 数据绑定 / 302
19.3 持久化数据库引擎db4o / 304
19.3.1 什么是db4o / 304
19.3.2 下载和安装db4o / 305
19.3.3 创建和打开数据库 / 305
19.3.4 操作Java对象 / 305
19.4 小结 / 308
第20章 蓝牙与Wi-Fi / 309
20.1 蓝牙编程 / 309
20.1.1 蓝牙简介 / 309
20.1.2 控制蓝牙设备 / 310
20.1.3 使蓝牙设备可被搜索到 / 311
20.1.4 搜索蓝牙设备 / 313
20.1.5 蓝牙设备之间的数据传输 / 316
20.2 Wi-Fi编程 / 320
20.2.1 控制Wi-Fi设备 / 320
20.2.2 获取Wi-Fi信息 / 321
20.2.3 客户端Socket / 323
20.2.4 服务端Socket / 324
20.2.5 移动版的Web服务器实例 / 324
20.2.6 在手机客户端访问Web服务器 / 329
20.3 小结 / 330
第21章 第三方程序库 / 331
21.1 GTalk客户端 / 331
21.1.1 XMPP协议简介 / 331
21.1.2 下载并安装asmack / 331
21.1.3 登录GTalk服务器 / 332
21.1.4 获取联系人信息 / 333
21.1.5 监听联系人是否在线 / 335
21.1.6 发送聊天消息 / 336
21.1.7 接收聊天消息 / 337
21.2 FTP客户端 / 337
21.2.1 连接与断开FTP服务器 / 338
21.2.2 获取与改变当前工作目录 / 339
21.2.3 列出所有的文件和目录 / 339
21.2.4 建立、重命名、删除指定目录 / 341
21.2.5 上传、重命名、下载、删除指定文件 / 341
21.3 绘制图表的程序库AChartEngine / 342
21.3.1 曲线图 / 342
21.3.2 条形图 / 346
21.3.3 离散点图 / 346
21.3.4 区域图 / 347
21.3.5 饼图 / 349
21.4 小结 / 349
第22章 编译在Android中的应用 / 350
22.1 JavaCC使用入门 / 350
22.1.1 JavaCC下载和安装 / 351
22.1.2 用JavaCC生成第一个分析器 / 351
22.2 JavaCC语法 / 354
22.3 JavaCC实战:计算器 / 355
22.3.1 生成计算表达式的分析器源代码 / 355
22.3.2 编写计算器的主程序 / 361
22.4 小结 / 365
第23章 Android SDK的2D绘图技术 / 366
23.1 绘图基础 / 366
23.1.1 绘制点 / 366
23.1.2 绘制直线 / 368
23.1.3 绘制三角形 / 368
23.1.4 绘制矩形和菱形 / 369
23.1.5 绘制圆、弧和椭圆 / 371
23.1.6 绘制文字 / 372
23.2 高级绘图技术 / 372
23.2.1 在画布上旋转图像 / 373
23.2.2 在EditText控件上绘制图像和文本 / 373
23.2.3 制作动画效果 / 375
23.3 绘图实战:电子罗盘 / 376
23.4 SurfaceView类 / 378
23.5 小结 / 380
第24章 OpenGL ES绘图技术 / 381
24.1 OpenGL ES简介 / 381
24.2 构建OpenGL ES框架 / 381
24.3 用OpenGL ES绘制2D图形 / 382
24.3.1 三角形 / 382
24.3.2 矩形 / 384
24.3.3 为图形上色 / 385
24.4 OpenGL ES实战:旋转立方体 / 387
24.4.1 绘制立方体 / 387
24.4.2 使立方体旋转起来 / 388
24.5 小结 / 389
第25章 性能优化 / 390
25.1 性能优化的基础知识 / 390
25.2 编写Java程序的最优化原则 / 391
25.2.1 用静态工厂方法代替构造方法 / 391
25.2.2 避免创建重复的对象 / 391
25.2.3 防止内存泄漏 / 393
25.2.4 接口只用于定义类型 / 394
25.2.5 返回零长度的集合而不是null / 394
25.2.6 通过接口引用对象 / 395
25.3 避免ANR / 395
25.4 性能检测 / 396
25.4.1 执行时间测试 / 396
25.4.2 内存消耗测试 / 398
25.4.3 测试性能的工具traceview / 399
25.5 小结 / 400
第26章 Android 4.0新技术探索 / 401
26.1 全新的Android,全新的体验 / 401
26.1.1 开发环境 / 401
26.1.2 模拟器 / 402
26.2 Activity中的容器Fragment / 405
26.2.1 Fragment的特点 / 405
26.2.2 Fragment的生命周期 / 406
26.2.3 显示对话框 / 410
26.2.4 隐藏和显示Fragment / 412
26.2.5 回退堆栈 / 415
26.3 Android 4.0的新特性 / 416
26.3.1 联系人提供者中的社会化API / 416
26.3.2 高分辨率的联系人照片 / 417
26.3.3 新的日历API / 417
26.3.4 语音信箱 / 417
26.3.5 多媒体API / 417
26.3.6 人脸识别 / 418
26.3.7 焦距和感光区域 / 418
26.3.8 摄像头自动对焦 / 419
26.3.9 Wi-Fi点对点连接 / 419
26.3.10 高级的网络应用 / 419
26.3.11 新增的设备传感器 / 420
26.3.12 WebKit浏览器引擎 / 420
26.4 Android 4.0实战:应用程序演示 / 420
26.5 小结 / 421

教学资源推荐
作者: [美]梁勇(Y. Daniel Liang)阿姆斯特朗亚特兰大州立大学 著
参考读物推荐
作者: 钟胜平 编著
作者: Bjarne Stroustrup
作者: 王秀文 郭明鑫 王宇韬 编著
作者: [美] 马修·柯克(Matthew Kirk)著