本书被Android开发者誉为Android学习经典。全书系统全面、循序渐进地介绍了Android软件开发的知识、经验和技巧。
第2版基于Android 7.0对第1版进行了全面更新,将所有知识点都在新的Android系统上进行重新适配,使用全新的Android Studio开发工具代替之前的Eclipse,并添加了对Material Design、运行时权限、Gradle、RecyclerView、百分比布局、OkHttp、Lambda表达式等全新知识点的详细讲解。
本书内容通俗易懂,由浅入深,既适合Android初学者的入门,也适合Android开发者的进阶。
郭霖
Android软件开发工程师。从事Android开发工作6年,有着丰富的项目实战经验,负责及参与开发过多款移动应用与游戏,对Android系统架构及应用层开发有着深入的理解。
2013年3月开始,在CSDN上发表Android技术相关博文,很快获得了大量网友的好评。目前博客访问量已超过500万次,评论超过10000条。荣获CSDN认证专家,并被连续评选为CSDN 2013、2014、2015年度博客之星。
第1章 开始启程——你的第一行Android代码 1
1.1 了解全貌——Android王国简介 2
1.1.1 Android系统架构 2
1.1.2 Android已发布的版本 3
1.1.3 Android应用开发特色 4
1.2 手把手带你搭建开发环境 5
1.2.1 准备所需要的工具 5
1.2.2 搭建开发环境 5
1.3 创建你的第一个Android项目 9
1.3.1 创建HelloWorld项目 9
1.3.2 启动模拟器 12
1.3.3 运行HelloWorld 15
1.3.4 分析你的第一个Android程序 16
1.3.5 详解项目中的资源 22
1.3.6 详解build.gradle文件 23
1.4 前行必备——掌握日志工具的使用 26
1.4.1 使用Android的日志工具Log 26
1.4.2 为什么使用Log而不使用System.out 27
1.5 小结与点评 29
第2章 先从看得到的入手——探究活动 30
2.1 活动是什么 30
2.2 活动的基本用法 30
2.2.1 手动创建活动 31
2.2.2 创建和加载布局 32
2.2.3 在AndroidManifest文件中注册 35
2.2.4 在活动中使用Toast 37
2.2.5 在活动中使用Menu 38
2.2.6 销毁一个活动 40
2.3 使用Intent在活动之间穿梭 41
2.3.1 使用显式Intent 41
2.3.2 使用隐式Intent 44
2.3.3 更多隐式Intent的用法 46
2.3.4 向下一个活动传递数据 50
2.3.5 返回数据给上一个活动 51
2.4 活动的生命周期 53
2.4.1 返回栈 53
2.4.2 活动状态 54
2.4.3 活动的生存期 55
2.4.4 体验活动的生命周期 56
2.4.5 活动被回收了怎么办 62
2.5 活动的启动模式 63
2.5.1 standard 64
2.5.2 singleTop 65
2.5.3 singleTask 67
2.5.4 singleInstance 68
2.6 活动的最佳实践 71
2.6.1 知晓当前是在哪一个活动 71
2.6.2 随时随地退出程序 72
2.6.3 启动活动的最佳写法 74
2.7 小结与点评 75
第3章 软件也要拼脸蛋——UI开发的点点滴滴 76
3.1 如何编写程序界面 76
3.2 常用控件的使用方法 77
3.2.1 TextView 77
3.2.2 Button 80
3.2.3 EditText 82
3.2.4 ImageView 86
3.2.5 ProgressBar 88
3.2.6 AlertDialog 91
3.2.7 ProgressDialog 93
3.3 详解4种基本布局 94
3.3.1 线性布局 94
3.3.2 相对布局 100
3.3.3 帧布局 103
3.3.4 百分比布局 105
3.4 系统控件不够用?创建自定义控件 108
3.4.1 引入布局 109
3.4.2 创建自定义控件 111
3.5 最常用和最难用的控件——ListView 113
3.5.1 ListView的简单用法 114
3.5.2 定制ListView的界面 115
3.5.3 提升ListView的运行效率 119
3.5.4 ListView的点击事件 120
3.6 更强大的滚动控件——RecyclerView 122
3.6.1 RecyclerView的基本用法 122
3.6.2 实现横向滚动和瀑布流布局 125
3.6.3 RecyclerView的点击事件 130
3.7 编写界面的最佳实践 132
3.7.1 制作Nine-Patch图片 132
3.7.2 编写精美的聊天界面 135
3.8 小结与点评 141
第4章 手机平板要兼顾——探究碎片 142
4.1 碎片是什么 142
4.2 碎片的使用方式 144
4.2.1 碎片的简单用法 144
4.2.2 动态添加碎片 147
4.2.3 在碎片中模拟返回栈 150
4.2.4 碎片和活动之间进行通信 151
4.3 碎片的生命周期 151
4.3.1 碎片的状态和回调 151
4.3.2 体验碎片的生命周期 153
4.4 动态加载布局的技巧 156
4.4.1 使用限定符 156
4.4.2 使用最小宽度限定符 159
4.5 碎片的最佳实践——一个简易版的新闻应用 160
4.6 小结与点评 169
第5章 全局大喇叭——详解广播机制 170
5.1 广播机制简介 170
5.2 接收系统广播 171
5.2.1 动态注册监听网络变化 171
5.2.2 静态注册实现开机启动 174
5.3 发送自定义广播 177
5.3.1 发送标准广播 177
5.3.2 发送有序广播 179
5.4 使用本地广播 183
5.5 广播的最佳实践——实现强制下线功能 185
5.6 Git时间——初识版本控制工具 192
5.6.1 安装Git 192
5.6.2 创建代码仓库 193
5.6.3 提交本地代码 195
5.7 小结与点评 195
第6章 数据存储全方案——详解持久化技术 196
6.1 持久化技术简介 196
6.2 文件存储 197
6.2.1 将数据存储到文件中 197
6.2.2 从文件中读取数据 201
6.3 SharedPreferences存储 203
6.3.1 将数据存储到SharedPreferences中 203
6.3.2 从SharedPreferences中读取数据 206
6.3.3 实现记住密码功能 208
6.4 SQLite数据库存储 211
6.4.1 创建数据库 211
6.4.2 升级数据库 216
6.4.3 添加数据 219
6.4.4 更新数据 222
6.4.5 删除数据 224
6.4.6 查询数据 225
6.4.7 使用SQL操作数据库 228
6.5 使用LitePal操作数据库 229
6.5.1 LitePal简介 229
6.5.2 配置LitePal 230
6.5.3 创建和升级数据库 231
6.5.4 使用LitePal添加数据 236
6.5.5 使用LitePal更新数据 237
6.5.6 使用LitePal删除数据 240
6.5.7 使用LitePal查询数据 241
6.6 小结与点评 243
第7章 跨程序共享数据——探究内容提供器 244
7.1 内容提供器简介 244
7.2 运行时权限 245
7.2.1 Android权限机制详解 245
7.2.2 在程序运行时申请权限 249
7.3 访问其他程序中的数据 254
7.3.1 ContentResolver的基本用法 254
7.3.2 读取系统联系人 256
7.4 创建自己的内容提供器 260
7.4.1 创建内容提供器的步骤 261
7.4.2 实现跨程序数据共享 265
7.5 Git时间——版本控制工具进阶 275
7.5.1 忽略文件 275
7.5.2 查看修改内容 276
7.5.3 撤销未提交的修改 278
7.5.4 查看提交记录 279
7.6 小结与点评 280
第8章 丰富你的程序——运用手机多媒体 281
8.1 将程序运行到手机上 281
8.2 使用通知 283
8.2.1 通知的基本用法 283
8.2.2 通知的进阶技巧 289
8.2.3 通知的高级功能 291
8.3 调用摄像头和相册 293
8.3.1 调用摄像头拍照 294
8.3.2 从相册中选择照片 298
8.4 播放多媒体文件 303
8.4.1 播放音频 303
8.4.2 播放视频 307
8.5 小结与点评 311
第9章 看看精彩的世界——使用网络技术 312
9.1 WebView的用法 312
9.2 使用HTTP协议访问网络 314
9.2.1 使用HttpURLConnection 315
9.2.2 使用OkHttp 319
9.3 解析XML格式数据 321
9.3.1 Pull解析方式 324
9.3.2 SAX解析方式 326
9.4 解析JSON格式数据 329
9.4.1 使用JSONObject 330
9.4.2 使用GSON 331
9.5 网络编程的最佳实践 334
9.6 小结与点评 338
第10章 后台默默的劳动者——探究服务 339
10.1 服务是什么 339
10.2 Android多线程编程 340
10.2.1 线程的基本用法 340
10.2.2 在子线程中更新UI 341
10.2.3 解析异步消息处理机制 345
10.2.4 使用AsyncTask 347
10.3 服务的基本用法 349
10.3.1 定义一个服务 349
10.3.2 启动和停止服务 352
10.3.3 活动和服务进行通信 355
10.4 服务的生命周期 359
10.5 服务的更多技巧 359
10.5.1 使用前台服务 359
10.5.2 使用IntentService 361
10.6 服务的最佳实践——完整版的下载示例 365
10.7 小结与点评 378
第11章 Android特色开发——基于位置的服务 379
11.1 基于位置的服务简介 379
11.2 申请API Key 380
11.3 使用百度定位 384
11.3.1 准备LBS SDK 384
11.3.2 确定自己位置的经纬度 386
11.3.3 选择定位模式 391
11.3.4 看得懂的位置信息 393
11.4 使用百度地图 395
11.4.1 让地图显示出来 395
11.4.2 移动到我的位置 397
11.4.3 让“我”显示在地图上 400
11.5 Git时间——版本控制工具的高级用法 402
11.5.1 分支的用法 403
11.5.2 与远程版本库协作 404
11.6 小结与点评 406
第12章 最佳的UI体验——MaterialDesign实战 407
12.1 什么是Material Design 407
12.2 Toolbar 408
12.3 滑动菜单 415
12.3.1 DrawerLayout 415
12.3.2 NavigationView 418
12.4 悬浮按钮和可交互提示 423
12.4.1 FloatingActionButton 424
12.4.2 Snackbar 427
12.4.3 CoordinatorLayout 428
12.5 卡片式布局 430
12.5.1 CardView 431
12.5.2 AppBarLayout 437
12.6 下拉刷新 440
12.7 可折叠式标题栏 443
12.7.1 CollapsingToolbarLayout 443
12.7.2 充分利用系统状态栏空间 453
12.8 小结与点评 456
第13章 继续进阶——你还应该掌握的高级技巧 457
13.1 全局获取Context的技巧 457
13.2 使用Intent传递对象 461
13.2.1 Serializable方式 461
13.2.2 Parcelable方式 463
13.3 定制自己的日志工具 464
13.4 调试Android程序 466
13.5 创建定时任务 469
13.5.1 Alarm机制 469
13.5.2 Doze模式 471
13.6 多窗口模式编程 472
13.6.1 进入多窗口模式 473
13.6.2 多窗口模式下的生命周期 475
13.6.3 禁用多窗口模式 479
13.7 Lambda表达式 481
13.8 总结 485
第14章 进入实战——开发酷欧天气 486
14.1 功能需求及技术可行性分析 486
14.2 Git时间——将代码托管到GitHub上 489
14.3 创建数据库和表 494
14.4 遍历全国省市县数据 499
14.5 显示天气信息 509
14.5.1 定义GSON实体类 509
14.5.2 编写天气界面 514
14.5.3 将天气显示到界面上 520
14.5.4 获取必应每日一图 526
14.6 手动更新天气和切换城市 532
14.6.1 手动更新天气 532
14.6.2 切换城市 535
14.7 后台自动更新天气 540
14.8 修改图标和名称 542
14.9 你还可以做的事情 543
第15章 最后一步——将应用发布到360应用商店 545
15.1 生成正式签名的APK文件 545
15.1.1 使用Android Studio生成 546
15.1.2 使用Gradle生成 548
15.1.3 生成多渠道APK文件 551
15.2 申请360开发者账号 554
15.3 发布应用程序 556
15.4 嵌入广告进行盈利 560
15.4.1 注册腾讯广告联盟账号 560
15.4.2 新建媒体和广告位 562
15.4.3 接入广告SDK 564
15.4.4 重新发布应用程序 569
15.5 结束语 570
虽然我从事Android开发工作已经很多年了,但是之前从来没有想过自己要去写一本Android技术相关的书。在我看来,写一本书可以算是一个很庞大的工程,写一本好书的难度并不亚于开发一款好的应用程序。
由于我长期坚持在CSDN上发表技术博文,因而得到了大量网友的认可,也积累了一定的名气。很荣幸的是,人民邮电出版社图灵公司的前副总编辑陈冰老师联系上了我,希望我可以写一本关于Android开发技术的书,这着实让我受宠若惊。
在写本书第1版的时候,我可以说是费了相当大的心思。写书和写博客最大的区别在于,书的内容不能像博客那样散乱,不能想到哪里写到哪里,而是一定要系统化,要循序渐进,基本上在写第1章的时候就应该把全书的内容都确定下来了。
令我非常欣慰的是,本书的第1版在推出之后获得了广大读者的强烈认可,在短短两年时间内,已经成为了国内最畅销的Android技术书。各大书店、图书馆都能看到《第一行代码》的身影,许多学校和培训机构也纷纷将《第一行代码》选为Android课程的教材。
不过,在科技高速发展的今天,各种技术的发展都是日新月异的。在两年的时间里,Android操作系统经历了5.0、6.0、7.0的飞速升级。不可否认的是,本书第1版中的不少知识点都已经过时,而且这两年间出现的很多新知识,第1版中也没有涵盖。因此,这让我坚定了写作本书第2版的想法。
刚开始写的时候,我以为只是小修小补,但事实上并没有我想象得那么轻松。除了介绍新知识点以外,书中之前的所有项目都需要重新编写和测试,以保证代码在新老系统上的兼容性。另外,由于Android从5.0系统开始,UI风格变化很大,因此第1版中所有的截图都需要更新。毫不夸张地说,我几乎重写了整本书。
而现在,你手中捧着的正是全新版的《第一行代码》,同时这也是国内第一本基于Android 7.0系统写作的技术书。我真诚地希望你可以用心去阅读这本书,因为每多掌握一份知识,你就会多一份喜悦。Enjoy it!
第2版的变化
由于第2版修改内容繁多,因此这里我只列举出最主要的变化。首先是开发工具上的改变,本书第1版使用的开发工具是Eclipse,而第2版使用了目前最新的Android Studio 2.2版本。另外,本书第1版是基于Android 4.x系统的,而第2版是基于Android 7.0系统的,其中囊括了新系统中的诸多知识点,包括Android 5.0系统中引入的Material Design、Android 6.0系统中引入的运行时权限和Doze模式、Android 7.0系统中引入的多窗口模式等。
除此之外,第2版还加入了Gradle、RecyclerView、百分比布局、OkHttp、Lambda表达式等全新知识点的讲解,内容将前所未有地充实。
读者对象
本书内容通俗易懂,由浅入深,既适合初学者阅读,也同样适合专业人员。学习本书内容之前,你并不需要有任何的Android基础,但是你需要有一定的Java基础,因为Android开发都是使用Java语言的,而本书并不会去专门介绍Java方面的知识。
阅读本书时,你可以根据自身的情况来决定如何阅读。如果你是初学者的话,建议你从第1章开始循序渐进地阅读,这样理解起来就不会感到吃力。而如果你已经有了一定的Android基础,那么就可以选择某些你感兴趣的章节进行跳跃式的阅读。但请记住,很多章最后的最佳实践部分一定是你不想错过的。
本书内容
正如前面所说,本书的内容是非常系统化的,不仅全面介绍了那些你必须掌握的知识,而且保证了各章的难度都是梯度式上升的。全书一共分为15章,涵盖了四大组件、UI、碎片、数据存储、多媒体、网络、定位服务等方方面面的知识。为了让你在学完所有内容之后还可以有综合运用的能力,本书的尾声部分还会带你一起开发一个天气预报程序,并教会你如何将程序发布到应用商店,以及如何在程序中嵌入广告盈利。
除此之外,本书的第5章、第7章、第11章、第14章中都穿插有对Git的讲解,如果想要掌握它的用法,这几章的内容是绝对不能错过的。
本书中各个章节的内容都相对比较独立,因此除了可以循序渐进地学习之外,你还可以把它当成一本参考手册,随时查阅。
源码下载
首先,我建议你在学习本书的时候将所有项目的源码都亲手敲上一遍,因为只有这样才能加深你对代码的理解。不过为了方便于你的学习,我还是提供了书中所有项目的源码,请仅在需要的时候再去参考(如下载项目中的图片资源)。切勿直接将源码复制粘贴就当成自己的东西了,只有亲手敲过的代码才真正是你自己的
这本书简直是我的Android开发启蒙导师!我之前对编程完全是个小白,看到厚厚的书本就头疼,总觉得无从下手。但《第一行代码 Android 第2版》就像一道光,把我从迷茫中解救出来。它没有上来就堆砌那些枯燥的理论和晦涩的概念,而是用非常接地气的方式,一步步引导你写出第一个能跑起来的Android应用。书中每一个小例子都设计得非常巧妙,从最简单的“Hello World”到后面涉及UI、事件处理,再到数据存储和网络请求,感觉就像在玩闯关游戏一样,每完成一关都能获得巨大的成就感。更重要的是,作者的讲解清晰易懂,即使我遇到不懂的地方,反复读几遍也能豁然开朗。我尤其喜欢它在讲解过程中穿插的各种开发技巧和注意事项,这些细节往往是其他书籍容易忽略的,但它们对于新手来说,简直是宝藏!让我少走了很多弯路。这本书真的让我体会到了编程的乐趣,并且建立了学习Android开发的信心。
评分作为一名在移动端领域摸爬滚打多年的老兵,我这次阅读《第一行代码 Android 第2版》更多的是为了回顾和查漏补缺。虽然我对Android开发已经有了一定的经验,但这本书依然给了我不少启发。它在讲解基础知识时,并没有停留在表面的API调用,而是深入剖析了Android系统的底层机制,例如Binder机制、消息循环、事件分发等。这些内容对于理解Android应用的运行原理至关重要,也能够帮助我们写出更健壮、更高效的代码。书中对一些高级主题的探讨,比如多线程、异步处理、性能优化等方面,也都有着独到的见解和实用的建议。我特别赞赏作者在讲解过程中,会引用大量的源码分析,这让我能够更透彻地理解框架的设计思路。此外,书中对于Android Jetpack组件的介绍,也让我了解到了最新的Android开发趋势和最佳实践。即便已经有经验,这本书依然能够提供新的视角和深入的知识。
评分我是一位有一定Java基础但对Android开发完全陌生的开发者,在寻找合适的入门书籍时,《第一行代码 Android 第2版》给我留下了深刻的印象。这本书的优点在于它能够很好地衔接Java知识与Android开发实践。它并没有假设读者对Android生态系统有任何先验知识,而是从零开始,详细讲解了Android应用的基本结构、生命周期、各种组件(Activity、Service、Broadcast Receiver、Content Provider)的作用和使用方法。书中对UI设计的讲解也非常细致,从XML布局文件的编写到各种常用控件的使用,再到如何实现响应式的界面,都提供了丰富的示例和详细的说明。此外,书中关于数据持久化(SharedPreferences、SQLite)和网络通信(HttpURLConnection)的章节,更是为我后续开发复杂应用打下了坚实的基础。我尤其欣赏作者在讲解过程中,会时不时地提醒读者注意一些常见的坑和优化建议,这对于避免日后踩雷非常有帮助。总的来说,这本书提供了一个系统且扎实的Android开发入门路径。
评分我是一名自由职业者,经常需要快速学习新的技术来完成客户的项目。《第一行代码 Android 第2版》这本书完全符合我的需求。它最大的特点就是“够用且高效”。这本书不是那种面面俱到、把所有细节都讲透的百科全书式书籍,而是聚焦于Android开发中最核心、最常用的部分。通过本书的学习,我能够在短时间内掌握Android应用开发的基本技能,并且能够独立完成一些中小型项目。书中提供的代码示例都经过精心设计,可以直接用于实际项目中,大大缩短了开发周期。我尤其喜欢它关于Fragment、RecyclerView、网络请求等章节的讲解,这些都是实际开发中必不可少的技能。而且,本书的更新速度也很快,能够跟上Android技术的发展步伐,这一点对于需要紧跟行业前沿的开发者来说尤为重要。学习效率高,实践性强,是这本书给我最大的感受。
评分我一直认为,学习编程最重要的是要培养一种“解决问题”的能力,而《第一行代码 Android 第2版》这本书在这方面做得非常出色。它不仅仅是教授代码,更重要的是教会读者如何去思考和分析问题。书中经常会提出一些实际开发中会遇到的场景,然后引导读者一步步地找出解决方案。比如在讲解异常处理时,作者会分析不同类型的异常可能的原因,并给出相应的处理建议。在讲解UI布局时,会讨论如何在不同屏幕尺寸下实现适配。这些“如何做”的思路,比单纯的代码堆砌更有价值。此外,本书在讲解过程中,也积极鼓励读者进行实践和探索,比如提出一些小挑战或者让读者思考更优的实现方式。这种互动式的学习方式,能够让读者在动手中真正理解知识,而不是被动地接受。读完这本书,我感觉自己不再只是一个“代码搬运工”,而是真正具备了独立分析和解决Android开发问题的能力。
评分好好学习,天天向上。希望自己早日成神。
评分郭神的书,没什么可说的,只要买就对了!第一版之前有了,现在买了第二版。通俗易上手,郭哥是大家的榜样
评分专业必备正版脉络清晰帮助很大理论基础实例经典查阅方便很实用性价比高
评分Thank you very much for the excellent service provided by Jingdong mall, and it is very good to do in warehouse management, logistics, distribution and so on. Delivery in a timely manner, distribution staff is also very enthusiastic, and sometimes inconvenient to receive the time, but also arranged for time to be delivered. At the same time in the mall management Jingdong customer service is also very good, to solve customer suffering, overcome all difficulties. Give us a very good shopping experience. !
评分和此卖家交流,不由得精神为之一振,自觉七经八脉为之一畅,我在~买了这么多年,所谓阅商无数,但与卖家您交流,我只想说,老板你实在是太好了,你的高尚情操太让人感动了,本人对此卖家之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心。交易成功后,我的心情是久久不能平静,自古英雄出少年,卖家年纪轻轻,就有经天纬地之才,定国安邦之智,而今,天佑我大中华,沧海桑田5000年,神州平地一声雷,飞沙走石,大雾迷天,朦胧中,只见顶天立地一金甲天神立于天地间,花见花开,人见人爱,这位英雄手持双斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒。得此大英雄,实乃国之幸也,民之福,人之初也,怎不叫人喜极而泣……看着交易成功,我竟产生出一种无以名之的悲痛感——啊,这么好的卖家,如果将来我再也遇不到了,那我该怎么办?直到我毫不犹豫地把卖家的店收藏了,我内心的那种激动才逐渐平静下来,可是我立刻想到,这么好的卖家,倘若别人看不到,那么不是浪费心血吗?经过痛苦的思想斗争,我终于下定决心,牺牲小我,奉献大我。我要以此评价奉献给世人赏阅,我要给好评……评到所有人都看到为止!
评分我为什么喜欢在京东买东西,因为今天买明天就可以送到。我为什么每个商品的评价都一样,因为在京东买的东西太多太多了,导致积累了很多未评价的订单,所以我统一用段话作为评价内容。京东购物这么久,有买到很好的产品
评分书没折不错,物流很棒,书别人介绍的,应该没毛病
评分书的纸质很好,还送了书签,物流非常快,很满意。
评分侄子比赛需要的书,大品牌,有保证,这个出版社的出版发行的书都很不错。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.qciss.net All Rights Reserved. 图书大百科 版权所有