具体描述
★由马里兰洛约拉学院教授编写,该作者具有专业的数学和计算机科学背景和相当丰富的教学经验,专业理论扎实,对于专业教程的编写具有相当成熟的经验。结构安排合理,包含最新知识点+循序渐进的讲解方式+每章相对独立的知识体系+每章末练习,适合读者自学或学生学习,也适合教师根据需要安排教学内容。实践性强,读者可以用渐进的方法制作独立的应用程序,结合有趣的主题,如动画、声音、照片编辑、使用GPS、展示地图和广告等。附赠与本书配套的随书资源,帮助读者更好把握本书本书内容。
★【编辑推荐】★
Android APP开发经典教程,受到读者五星好评!专业的人写专业的书给专业的读者!不管你已经初识Android或者还未进入Android 开发大门,都能通过本书得到系统训练!随书附赠Android Studio所有程序源代码及PPT课件,亲手实践体验应用程序开发乐趣吧!
★【内容简介】★
本书前九章介绍了Android应用开发的基本概念。最后七章介绍了更具体的主题。
附录中介绍了正文章节中涉及到的几个概念:检索设备的尺寸,包括状态栏和操作栏的高度;动态调整TextView的字体大小;使用AsyncTask在后台执行任务(从远程位置中检索数据);使用Google Play服务等。这样的章节分配能使大部分章节内容相对独立,有利于教师在教学时挑选需要的章节进行教学。
作者简介
【美】埃尔维·杰伊·弗朗西斯基 Hervé J. Franceschi
美国马里兰洛约拉大学计算机科学学院教授,从事计算机教学和研究工作十余年。出版或参与出版过的著作有《JavaIlluminated》等。
目录信息
前言
CHAPTER 1 Android基础知识,第一个应用程序: HelloAndroid
1.1 智能手机及其操作系统
1.1.1 智能手机
1.1.2 Android手机
1.1.3 App和Google Play
1.2 Android应用开发环境
1.3 第一个应用程序: HelloAndroid
1.3.1 框架应用
1.3.2 GUI预览
1.3.3 XML文件: activity_main.xml、 colors.xml、 styles.xml、 strings.xml、 dimens.xml
1.3.4 MainActivity类
1.4 在模拟器中运行App
1.5 使用Logcat调试App
1.6 调试器的使用
1.7 在实际设备上测试App
1.8 App Manifest和Gradle构建系统
1.8.1 AndroidManifest.xml文件: App图标与面向安卓的设备
1.8.2 Gradle构建系统
CHAPTER 2 模型视图控制器、 GUI组件和事件
2.1 模型视图控制器(MVC)框架
2.2 模型
2.3 GUI组件
2.4 RelativeLayout、 TextView、 EditText和Button: Tip Calculator应用程序,版本0
2.5 GUI组件和多XML属性: Tip Calculator应用程序,版本1
2.6 风格和主题: Tip Calculator应用程序,版本2
2.7 事件和简单事件处理:编写控制器, Tip Calculator应用程序,版本3
2.8 多事件处理: Tip Calculator应用程序,版本4
CHAPTER 3 GUI、布局管理器编程
3.1 MVC框架
3.2 模型
3.3 以编程方式创建GUI, TicTacToe应用程序,版本0
3.4 事件处理: TicTacToe应用程序,版本1
3.5 整合模型以支持游戏玩法: TicTacToe应用程序,版本2
3.6 内部类
3.7 布局参数: TicTacToe应用程序,版本3
3.8 提醒对话框: TicTacToe应用程序,版本4
3.9 拆分视图和控制器: TicTacToe应用程序,版本5
CHAPTER 4 多个Activity,在Activity之间传递数据,转换,持久性数据
4.1 模型: Mortgage类
4.2 使用TableLayout作为GUI前端: Mortgage Calculator应用程序,版本0
4.3 使用RelativeLayout作为第二屏幕GUI
4.4 连接两个activity: Mortgage Calculator应用程序,版本1
4.5 activity的生命周期
4.6 多个activity之间共享数据: Mortgage Calculator应用程序,版本2
4.7 activity之间的转换: Mortgage Calculator应用程序,版本3
4.8 处理持久性数据: Mortgage Calculator应用程序,版本4
CHAPTER 5 菜单和SQLite
5.1 菜单和菜单项: Candy Store应用程序,版本0
5.2 图标: Candy Store应用程序,版本1
5.3 SQLite:创建数据库、表和插入数据, Candy Store应用程序,版本2
5.4 删除数据: Candy Store应用程序,版本3
5.5 更新数据: Candy Store应用程序,版本4
5.6 运行收银机: Candy Store应用程序,版本5
CHAPTER 6 设备方向管理
6.1 Configuration类
6.2 捕获设备旋转事件
6.3 策略1:为每个方向设置一个Layout XML文件
6.4 策略2:为两个方向应用一个layout XML文件,用代码修改布局
6.5 策略3:完全用代码管理布局和方向
CHAPTER 7 触摸与滑动
7.1 检测触摸事件
7.2 处理滑动事件:移动TextView
7.3 模型
7.4 视图:设置GUI, Puzzle应用程序,版本0
7.5 移动拼图, Puzzle应用程序,版本1
7.6 解决难题, Puzzle应用程序,版本2
7.7 手势、点击检测和处理
7.8 检测双击, Puzzle应用程序,版本3
7.9 独立的应用程序设备, Puzzle应用程序,版本4
CHAPTER 8 图形、动画、声音和游戏
8.1 图形
8.2 制作自定义视图,绘图, Duck Hunting应用程序,版本0
8.3 模型
8.4 动画对象:飞鸭, Duck Hunting应用程序,版本1
8.5 处理触摸事件:移动大炮和射击, Duck Hunting应用程序,版本2
8.6 播放声音:射击、碰撞检测, Duck Hunting应用程序,版本3
CHAPTER 9 片段
9.1 模型
9.2 片段
9.3 使用布局XML文件为activity定义和添加片段,猜字游戏应用程序,版本0
9.4 添加GUI组件、样式、字符串和颜色,猜字游戏应用程序,版本1
9.5 使用布局XML文件定义片段并通过代码将片段添加到activity,猜字游戏应用程序,本2
9.6 通过代码定义activity并为其添加一个片段,猜字游戏应用程序,版本3
9.7 片段与其activity之间的通信:启用Play,猜字游戏应用程序,版本 4
9.8 使用隐形片段,猜字游戏应用程序,版本5
9.9 使片段可重用,猜字游戏应用程序,版本6
9.10 改进GUI:直接处理键盘输入,猜字游戏应用程序,版本7
CHAPTER 10 使用库及其API:语音识别和地图
10.1 语音识别
10.2 语音识别A部分,应用程序版本0
10.3 使用谷歌地图活动模板,应用程序版本1
10.4 在地图中添加注释,应用程序版本2
10.5 模型
10.6 基于语音输入显示地图,应用程序版本3
10.7 控制语音输入,应用程序版本4
10.8 语音识别B部分,使用语音移动地图一次,应用程序版本5
10.9 语音识别C部分,连续使用语音移动地图,应用程序版本6
CHAPTER 11 使用GPS和定位服务
11.1 访问Google Play服务, GPS应用程序,版本0
11.2 使用GPS检索我们的位置, GPS应用程序,版本1
11.3 到达目的地的距离和时间的模型
11.4 到达目的地的距离和时间, GPS应用程序,版本2
11.5 更新到达目的地的距离和时间, GPS应用程序,版本3
CHAPTER 12 在一款应用程序中使用其他应用程序:
拍照、调为灰度模式和发送邮件
12.1 调用相机应用程序并拍摄照片,照片应用程序,版本0
12.2 模型:将照片调为灰度模式,照片应用程序,版本1
12.3 使用SeekBars定义灰度阴影,照片应用程序,版本2
12.4 改进用户界面,照片应用程序,版本3
12.5 存储图片,照片应用程序,版本4
12.6 使用电子邮件应用程序:将灰度图片发送给朋友,照片应用程序,版本5
CHAPTER 13 XML和内容型应用程序
13.1 解析XML、 DOM和SAX解析器, Web Content应用程序,版本0
13.2 将XML解析为列表, Web Content应用程序,版本1
13.3 解析远程XML文档, Web Content应用程序,版本2
13.4 Web Content应用程序在ListView中显示结果,版本3
13.5 在应用程序内部打开Web浏览器, Web Content应用程序,版本4
CHAPTER 14 制作Android小部件
14.1 制作小部件的操作步骤:温度小部件,版本0
14.2 设置小部件样式:温度小部件,版本1
14.3 更新小部件的数据:温度小部件,版本2
14.4 通过单击更新小部件的数据:温度小部件,版本3
14.5 检索远程源中的温度数据:温度小部件,版本4
14.6 使用Activity自定义小部件:温度小部件,版本5
14.7 在锁屏屏幕上托管小部件:温度小部件,版本6
CHAPTER 15 在应用程序中添加广告
15.1 视图: Stopwatch应用程序,版本0
15.2 控制器:运行Stopwatch应用程序,版本1
15.3 改进Stopwatch应用程序,版本2
15.4 植入广告Stopwatch应用程序,版本3
15.5 把广告嵌入碎片中: Stopwatch应用程序,版本4
15.6 AdView生命周期的管理: Stopwatch应用程序,版本5
CHAPTER 16 安全和加密
16.1 对称和非对称加密
16.2 对称加密:模型(AES), Encryption应用程序,版本0
16.3 对称加密:添加视图, Encryption应用程序,版本1
16.4 非对称加密:将RSA添加到模型, Encryption应用程序,版本2
16.5 对称和非对称加密:修改视图, Encryption应用程序,版本3
附录 a 动态检索状态栏和操作栏的高度
附录 B 动态设置TextView的字体大小
附录 c 下载、安装Google Play服务和使用地图
附录 D AsyncTask类
· · · · · · (收起)
读后感
用户评价
我特意去对比了市面上其他几本被广泛推荐的安卓书籍,它们无一例外地都在强调 Kotlin 语言的现代化特性在安卓开发中的应用,比如作用域函数、扩展函数在构建 DSL 结构中的威力,以及如何用 Kotlin Flow 来替代 RxJava 处理复杂的响应式数据流。然而,在这本“完全学习教程”中,你依然能看到大量的 Java 代码片段,即便是引入 Kotlin,也多是生硬地将 Java 语法直接翻译过来,完全没有体现出 Kotlin 语言的简洁和表达力。这种对语言特性的选择性忽视,直接反映了作者对当前技术栈的认知滞后。例如,在处理权限请求时,书中可能还在讲解基于回调的旧版 API 调用流程,而不是使用更现代、更简洁的 `ActivityResultContracts` 来管理状态和结果。对于一个声称要“完全学习”的教程来说,对编程语言本身的最新、最高效的用法持保守甚至排斥的态度,这无异于在教人使用过时的工具进行现代化的工作。这使得学习过程不仅效率低下,而且建立起来的编码习惯也可能与主流社区格格不入,后续的学习成本反而更高。
关于这本书在“性能优化”和“大型项目实践”方面的论述,我只能用“蜻蜓点水”来形容。在如今动辄上百万行代码的复杂应用场景下,仅仅停留在如何通过 `onDraw()` 优化一个自定义控件的性能是远远不够的。我期待能看到关于内存泄漏的系统性排查方法,比如如何熟练运用 LeakCanary 配合 Profiler 进行深度分析;或者在处理大数据量列表时,如何科学地使用 Paging 3 库来实现高效的边界处理和缓存策略。然而,这本书对这些前沿且至关重要的主题,要么是避而不谈,要么就是用几段话一带而过,缺乏深入的原理剖析和实战案例支撑。比如,它提到了多模块化构建,但对于如何使用 Gradle 脚本有效地管理不同模块间的依赖关系、如何配置 KSP (Kotlin Symbol Processing) 来实现编译时代码生成以提高效率,这些现代大型项目架构的基石内容完全缺失。读完相关章节后,我感觉自己掌握的优化技巧依然停留在“少用日志”和“尽量不要在主线程做耗时操作”这种小学生级别的认知上,完全无法应对真实世界中复杂的性能挑战,这本书在提升读者专业度方面,显得力不从心且后劲不足。
总的来说,这本书在“基础概念普及”这个层面上,或许还能勉强提供一些入门级的知识点,类似于一本面向两年前毕业生的参考书。但是,如果期待它能成为一本能够让你从入门顺利过渡到能够独立承担中等复杂度项目开发的“圣经”,那绝对是痴人说梦。它缺乏对当前主流架构模式(如 MVVM-C 或 MVI)的深入剖析和对比,没有提供一套可供参考的最佳实践模板。阅读过程中,我不断地需要在脑中自动过滤掉那些过时或低效的建议,并主动去搜索和验证书中所述的每一个技术点是否仍然适用。这种“边学边纠错”的过程,极大地消耗了学习的热情和时间。一本优秀的教程应该最大化学习效率,而不是成为读者进行知识考古的工具。最终,我不得不承认,这本书更适合放在书架上作为对过去技术栈的一个快照留念,而对于寻求实战能力和前沿知识的开发者来说,它提供的有效信息量实在太低,远不如直接查阅官方文档和高质量的技术博客来得直接和可靠。
初次接触这本书时,我以为它会提供一个清晰、逻辑严谨的学习路径,毕竟是“教程”嘛。但实际阅读体验就像是在一片茂密的丛林中迷失了方向。结构上的混乱是这本书最让人抓狂的地方。它似乎没有一个明确的主线来引导读者从 A 点到达 B 点。前几章还在讲 AndroidManifest 的配置细节,下一章突然跳到了自定义 View 的绘制原理,中间完全没有过渡,更别提将这些知识点串联起来形成一个完整的应用开发概念了。更要命的是,代码示例的质量简直令人不敢恭维。那些用来演示核心概念的代码片段,往往缺乏必要的注释和必要的上下文,很多变量命名随意到让人费解,甚至在某些关键的生命周期回调中,作者还存在一些约定俗成的错误理解,这对于刚刚建立编程思维的新手来说,是极大的误导。我尝试跟着书中的一个“实战项目”进行模仿,结果光是环境配置和依赖项冲突就花费了我一整天的时间来解决,而书中对此只是轻描淡写地写了一句“请确保依赖已正确引入”。一本好的教程应该帮助读者扫清障碍,而不是制造更多陷阱,这本书显然在这方面做得非常失败,它更像是一份零散笔记的集合,而不是精心编排的教学材料,学习曲线陡峭得让人望而却步,让人完全无法建立起对安卓架构的全局观。
这本号称是“完全学习教程”的书,坦白说,我拿到手的时候心里是带着期待的,毕竟现在安卓开发的更新速度实在太快了,总希望能有一本能全面覆盖基础到进阶的权威指南。然而,在翻阅了前几章之后,我的心情从期待迅速转为困惑。它似乎将所有的精力都放在了对那些早已被社区讨论烂熟的、API 19 甚至更早版本的讲解上,对于近几年引入的 Jetpack 组件,比如 Navigation Component、最新的 Compose 架构,几乎是只字未提,或者用非常简略的官方文档摘录草草带过。这对于想要跟上现代安卓开发潮流的初学者来说,无疑是致命的缺陷。学习一门技术,最忌讳的就是学了过时的东西,而这本书的深度和广度明显停留在好几年前的水平。当我试图寻找关于协程(Coroutines)在现代异步处理中的最佳实践时,发现书中还在大篇幅地讲解传统的 `AsyncTask` 及其各种回调地狱的解决方案,这让我感觉自己像是在翻阅一本收藏在博物馆里的古籍,而非一本实用的技术手册。如果作者的目标读者是那些想了解“安卓开发历史”的人,那或许勉强合格,但对于“现在”的开发者而言,它提供的价值微乎其微,更像是对旧知识的一种存档,而非学习的“教程”。我甚至怀疑作者是否真正跟进了最近两年的 Google I/O 发布的任何重要内容,因为那种脱节感实在太强烈了,以至于我不得不立刻去官方网站寻找最新的官方文档来补充我急需掌握的知识点。