Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。最早是为数码相机开发的系统。后来,支持手机的Android操作系统由Andy Rubin开发。2005年8月由Google 收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。
随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android是增长最快的操作系统,因其在3大操作系统中支持设备种类最丰富、数量最多,所以它也有着庞大的用户群,是发展最快的科技产品。
1. 为什么选择Java开发Android
学习Android开发,对每个新手都是一个很大的挑战,就好像在异国他乡学会生存一样。即使会说当地的语言,一开始也绝不会有在家的感觉,因为你不能完全理解周围人理解的东西。原有的知识储备在新环境下可能完全派不上用场。
Android有自己的语言文化——Java语言。那为什么选择Java呢?Java是一个跨平台语言,它不像C++那样需要重新进行编译。Java的运行效率虽然不佳,但是它的语法相对简单,其中的相对特性也能让一般程序员开发出比较稳定的程序。因为Java程序是运行在虚拟机上,这就为权限控制,崩溃隔离等问题打下了一个良好的基础,就算一个程序崩溃了,往往也只是应用闪退,不容易造成系统的整个崩溃。Java的使用人群范围较广,用户基数庞大。虽然C++的使用人群也不少,不过相对来说少一些。使用Java的开发者更容易转为Android开发者,这在一开始Android生态系统未能建立时,尤为重要。但仅掌握Java远远不够,还需要学习很多新的理论和技术知识来理清头绪,从而指引你穿越陌生的领域。
2. 图灵Android参考图书
《第一行代码——Android(第2版)》
《Android编程权威指南(第3版)》
《Android编程实战》
《高性能Android应用开发》
《Android安全攻防权威指南》
《黑客攻防技术宝典:移动应用篇》(新书预告)
以上图书均有图灵社区电子版。更多图灵 Android 相关图书请查阅书单:
— 图灵Android书单
以下为大家重点推荐美亚 Android编程第一书 Android Programming: The Big Nerd Ranch Guide, Third Edition 中文版——《Android编程权威指南(第3版)》。
小贴士
Big Nerd Ranch 是美国一家培训机构,他们同时也成立了自己的出版公司,他家的技术图书目前统称为 Big Nerd Ranch Guides 系列,这个系列整体上相当给力,国内各家出版社也是各种争抢版权。
这个系列,图灵已出版2本,另外一本是《Swift编程权威指南》,这篇文章之后为大家推荐,非常给力,也是美国亚马逊Swift学习第一书。图灵这边还有一本 Front-End Web Development: The Big Nerd Ranch Guide (Big NerdRanch Guides) (中文版《Web开发权威指南》),正在编辑中,估计9月份跟大家见面。
他家这个系列的书还涵盖iOS、OS X、OC主题,国内已经由其他出版社引进,喜欢这个系列的可以自行去网店搜索。
3. Android编程权威指南(第3版)
作者:Bill Phillips,Chris Stewart,Kristin Marsicano
译者:王明发
定价:129.00元 / 电子书:59.99元
Amazon移动开发类榜首图书重磅升级!
Android开发入门与进阶不二之选!
简单易懂的示例 + 实战项目,涵盖Android开发方方面面!
针对当前广泛使用的各个系统版本(Android 4.4 至 Android 7.1)
本书主要以Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共36章,详细介绍了8个Android应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。
本书已经升级到了第3版,并为大家介绍了一些新工具:constraintlayout(包括其编辑器)和数据绑定(data binding)。新增的几个章节,内容涉及单元测试、辅助功能(accessibility)、MVVM架构和应用本地化。书的末尾还介绍了Android的新运行时权限系统。此外,我们还进一步扩充了挑战练习和深入学习部分的内容,并修订了全书的一些不够完善的部分。
Bill Phillips
Big Nerd Ranch资深讲师,与人合作开发了广受好评的Android训练营培训课程,并为之编写教材。
Chris Stewart
Big Nerd Ranch的Android团队主管、Android训练营资深讲师。
Kristin Marsicano
Big Nerd Ranch资深讲师、Android开发者。
王明发
毕业于华东理工大学。软件开发及项目管理者,拥有近十年的软件开发及项目管理经验;除了翻译本书前两版之外,另译有《写给大家看的项目管理书(第3版)》。
— 亚马逊购买本书 —
4. 阅读之前需要掌握哪些Java知识
使用本书,你需要熟悉Java语言,包括类、对象、接口、监听器、包、内部类、匿名内部类、泛型类等基本概念。如果对这些概念感到陌生,那么你很可能在翻到第二页时就已经无法再读下去了。对此,建议先放下本书,找本Java入门书看一看。市面上有很多优秀的Java入门书,你可以基于自己的编程经验及学习风格去挑选。如果你熟悉面向对象编程,但Java知识忘得差不多了,那么阅读本书应该不会有太大的问题。对于接口、匿名内部类等重要的Java语言点,我们会提供必要的简短回顾。建议在学习过程中手边备上一本Java参考书,方便查阅。
Google还会不断地发布新版本的Android系统。请放心,Android支持向后兼容,即便有了新系统,本书所授知识也不会过时。而且,通过forums.bignerdranch.com论坛,我们也会不断跟踪Android开发新动向,及时为你提供开发指导和支持。
6. 内容概览
本书会教会你开发8个Android应用。有些应用很简单,一章即可讲完;有些则相对复杂。最复杂的一个应用跨越了11章。通过这些精心编排的应用,你能学到很多重要的理论知识和开发技巧,并获得最直接的开发经验。
GeoQuiz
本书的第一个应用,通过它学习Android应用的基本组成、activity、界面布局(layout)以及显式intent。
CriminalIntent
本书最复杂的应用,用来记录办公室同事的种种陋习。通过本应用学习fragment、master-detail用户界面、list-backed用户界面、菜单选项、相机调用、隐式intent等内容。
BeatBox
通过这个可以震慑敌人的应用,继续深入学习fragment、媒体文件的播放与控制、主题以及drawable。
NerdLauncher
通过个性化启动器的开发,深入学习intent以及任务的概念知识。
PhotoGallery
通过开发从Flickr网站下载并显示照片的客户端应用,学习Android服务、多线程、网络内容获取服务等知识。
DragAndDraw
一个简单的画图应用,通过它学习触摸手势事件处理以及创建个性化视图等知识。
Sunset
一个漂亮的日落动画应用,通过它学习Android动画知识。
Locatr
查询当前位置的Flickr图片并显示在地图上的应用。借此应用学习如何使用定位服务和地图。
7. 练习题?有
大部分章末都配有练习题。可借此机会学以致用,查阅官方文档,锻炼独立解决问题的能力。强烈建议你完成这些挑战练习。在练习过程中,尝试另辟蹊径,探索自己独特的学习之路。这有助于巩固所学知识,增强未来开发应用的信心。若遇到一时难以解决的问题,请访问论坛http://forums.bignerdranch.com求助。
8.
图书目录
第1章 Android开发初体验 1
1.1 Android 开发基础 2
1.2 创建Android项目 2
1.3 Android Studio使用导航 6
1.4 用户界面设计 6
1.5 从布局XML到视图对象 13
1.6 组件的实际应用 16
1.7 创建提示消息 19
1.8 使用模拟器运行应用 21
1.9 深入学习:Android编译过程 23
1.10 关于挑战练习 25
1.11 挑战练习:定制toast消息 25
第2章 Android与MVC设计模式 26
2.1 创建新类 26
2.2 Android与MVC设计模式 29
2.3 更新视图层 31
2.4 更新控制器层 33
2.5 在物理设备上运行应用 37
2.6 添加图标资源 38
2.7 挑战练习:为TextView添加监听器 42
2.8 挑战练习:添加后退按钮 42
2.9 挑战练习:从按钮到图标按钮 42
第3章 activity的生命周期 45
3.1 日志跟踪理解activity生命周期 46
3.2 设备旋转与activity生命周期 52
3.3 保存数据以应对设备旋转 56
3.4 再探activity生命周期 58
3.5 深入学习:activity内存清理现状 59
3.6 深入学习:日志记录的级别与方法 60
3.7 挑战练习:禁止一题多答 61
3.8 挑战练习:评分 61
第4章 Android应用的调试 62
4.1 异常与栈跟踪 63
4.2 Android特有的调试工具 70
4.3 挑战练习:探索布局检查器 72
4.4 挑战练习:探索内存分配跟踪 72
第5章 第二个activity 74
5.1 创建第二个activity 75
5.2 启动activity 81
5.3 activity间的数据传递 83
5.4 activity的使用与管理 91
5.5 挑战练习:堵住漏洞 93
第6章 Android SDK版本与兼容 94
6.1 Android SDK版本 94
6.2 Android编程与兼容性问题 95
6.3 使用Android开发者文档 100
6.4 挑战练习:报告编译版本 101
6.5 挑战练习:限制作弊次数 102
第7章 UI fragment与fragment管理器 103
7.1 UI 设计的灵活性需求 104
7.2 引入fragment104
7.3 着手开发CriminalIntent 105
7.4 托管UI fragment 112
7.5 创建UI fragment 115
7.6 向FragmentManager添加UI fragment 122
7.7 采用fragment的应用架构 126
7.8 深入学习:fragment与支持库 127
7.9 深入学习:为什么优先使用支持库版fragment 128
第8章 使用RecyclerView显示列表 129
8.1 升级CriminalIntent应用的模型层 130
8.2 使用抽象activity托管fragment 132
8.3 RecyclerView、ViewHolder和Adapter 137
8.4 绑定列表项 145
8.5 响应点击 147
8.6 深入学习:ListView和GridView 148
8.7 深入学习:单例 148
8.8 挑战练习:RecyclerViewViewType 149
第9章 使用布局与组件创建用户界面 150
9.1 使用图形布局工具 151
9.2 引入ConstraintLayout 151
9.3 深入学习布局属性 163
9.4 图形布局工具使用小结 167
9.5 挑战练习:日期格式化 167
第10章 使用fragment argument 168
10.1 从fragment中启动activity 168
10.2 fragment argument 172
10.3 刷新显示列表项 174
10.4 通过fragment获取返回结果 176
10.5 深入学习:为何要用fragment argument 177
10.6 挑战练习:实现高效的RecyclerView刷新 178
10.7 挑战练习:优化CrimeLab的表现 178
第11章 使用ViewPager 179
11.1 创建CrimePagerActivity 180
11.2 FragmentStatePagerAdapter与FragmentPagerAdapter 184
11.3 深入学习:ViewPager的工作原理 186
11.4 深入学习:以代码的方式创建视图 187
11.5 挑战练习:恢复CrimeFragment的边距 187
11.6 挑战练习:添加Jump to First按钮和Jump to Last按钮 188
第12章 对话框 189
12.1 创建DialogFragment 190
12.2 fragment 间的数据传递 196
12.3 挑战练习:更多对话框 205
12.4 挑战练习:实现响应式DialogFragment 205
第13章 工具栏 207
13.1 AppCompat 207
13.2 工具栏菜单 209
13.3 实现层级式导航 218
13.4 可选菜单项 219
13.5 深入学习:工具栏与操作栏 224
13.6 挑战练习:删除crime记录 224
13.7 挑战练习:复数字符串资源 224
13.8 挑战练习:用于RecyclerView的空视图 225
第14章 SQLite数据库 226
14.1 定义schema 226
14.2 创建初始数据库 227
14.3 修改CrimeLab 232
14.4 写入数据库 233
14.5 读取数据库 235
14.6 深入学习:数据库高级主题介绍 241
14.7 深入学习:应用上下文 241
14.8 挑战练习:删除crime记录 242
第15章 隐式intent 243
15.1 添加按钮组件 244
15.2 添加嫌疑人信息至模型层 244
15.3 使用格式化字符串 246
15.4 使用隐式intent 248
15.5 挑战练习:ShareCompat 256
15.6 挑战练习:又一个隐式intent 256
第16章 使用intent拍照 258
16.1 布置照片 258
16.2 文件存储 260
16.5 功能声明 268
16.6 挑战练习:优化照片显示 269
16.7 挑战练习:优化缩略图加载 269
第17章 双版面主从用户界面 270
17.1 增加布局灵活性 271
17.2 activity:fragment的托管者 276
17.3 深入学习:设备屏幕尺寸的确定 284
17.4 挑战练习:添加滑动删除功能 285
第18章 应用本地化 286
18.1 资源本地化. 286
18.2 配置修饰符 294
18.3 测试备选资源 298
18.4 挑战练习:日期本地化 298
第19章 Android辅助功能 299
19.1 TalkBack299
19.2 实现非文字型元素可读 303
19.3 提升辅助体验 305
19.4 深入学习:使用辅助功能扫描器 309
19.5 挑战练习:优化列表项 311
19.6 挑战练习:补全上下文信息 311
19.7 挑战练习:事件主动通知 311
第20章 数据绑定与MVVM 313
20.1 为何要用MVVM架构 314
20.2 创建BeatBox应用 314
20.3 导入assets 319
20.4 处理assets 321
20.5 使用assets 323
20.6 绑定数据 325
20.7 访问assets 332
20.8 深入学习:数据绑定再探 333
20.9 深入学习:为何使用assets 334
20.10 深入学习:什么是non-assets 334
第21章 音频播放与单元测试 335
21.1 创建SoundPool 335
21.2 加载音频文件 336
21.3 播放音频 337
21.4 添加测试依赖 338
21.5 创建测试类 339
21.6 实现测试类 341
21.7 编写测试方法 342
21.8 数据绑定回调 346
21.9 释放音频 346
21.10 设备旋转和对象保存 347
21.11 深入学习:是否保留fragment 351
21.12 深入学习:Espresso与整合测试 351
21.13 深入学习:虚拟对象与测试 352
21.14 挑战练习:播放进度控制 353
第22章 样式与主题 354
22.1 颜色资源 354
22.2 样式 355
22.3 主题 357
22.4 添加主题颜色 359
22.5 覆盖主题属性 361
22.6 修改按钮属性 364
22.7 深入学习:样式继承拾遗 367
22.8 深入学习:引用主题属性 367
第23章 XML drawable 368
23.1 统一按钮样式 368
23.2 shape drawable 369
23.3 state list drawable 371
23.4 layer list drawable 372
23.5 深入学习:为什么要用XML drawable 373
23.6 深入学习:使用mipmap图像 374
23.7 深入学习:使用9-patch图像 375
23.8 挑战练习:按钮主题. 379
第24章 深入学习intent和任务 380
24.1 创建NerdLauncher项目 380
24.2 解析隐式intent382
24.3 在运行时创建显式intent 386
24.4 任务与回退栈 388
24.5 使用NerdLauncher应用作为设备主屏幕 392
24.6 挑战练习:应用图标. 393
24.7 深入学习:进程与任务 393
24.8 深入学习:并发文档. 395
第25章 HTTP与后台任务 398
25.1 创建PhotoGallery应用 399
25.2 网络连接基本 401
25.3 使用AsyncTask 在后台线程上运行代码 403
25.4 线程与主线程 405
25.5 从Flickr获取JSON数据 407
25.6 从AsyncTask回到主线程 413
25.7 清理AsyncTask416
25.8 深入学习:AsyncTask再探 416
25.9 深入学习:AsyncTask的替代方案 417
25.10 挑战练习:Gson418
25.11 挑战练习:分页 418
25.12 挑战练习:动态调整网格列 418
第26章 Looper、Handler和HandlerThread
26.1 配置RecyclerView以显示图片 420
26.2 批量下载缩略图 422
26.3 与主线程通信 423
26.4 创建并启动后台线程 424
26.5 Message与message handler 426
26.6 深入学习:AsyncTask与线程 436
26.7 深入学习:解决图片下载问题 436
26.8 深入学习:StrictMode437
26.9 挑战练习:预加载以及缓存 438
第27章 搜索 439
27.1 搜索Flickr网站 439
27.2 使用SearchView 443
27.3 使用shared preferences实现轻量级数据存储 447
27.4 优化应用 451
27.5 挑战练习:深度优化PhotoGallery应用 451
第28章 后台服务 452
28.1 创建IntentService 452
28.2 服务的作用 454
28.3 查找最新返回结果 456
28.4 使用AlarmManager延迟运行服务 458
28.5 控制定时器 462
28.6 通知信息 464
28.7 挑战练习:可穿戴设备上的通知 466
28.8 深入学习:服务之细节 467
28.9 深入学习:JobScheduler和JobService 469
28.10 挑战练习:在Lollipop设备上使用JobService 472
28.11 深入学习:sync adapter472
第29章 broadcast intent
29.1 普通intent和broadcast intent 474
29.2 接收系统broadcast:重启后唤醒 475
29.3 过滤前台通知消息 479
29.4 receiver与长时运行任务 488
29.5 深入学习:本地事件 488
29.6 深入学习:探测fragment的状态 490
第30章 网页浏览 492
30.1 最后一段Flickr数据 492
30.2 简单方式:隐式intent 494
30.3 较难方式:使用WebView 496
30.4 处理WebView的设备旋转问题 502
30.5 深入学习:注入JavaScript对象 502
30.6 深入学习:WebView 升级 503
30.7 挑战练习:使用后退键浏览历史网页 504
30.8 挑战练习:非HTTP链接支持 504
第31章 定制视图与触摸事件 505
31.1 创建DragAndDraw项目 505
31.2 创建定制视图 507
31.3 处理触摸事件 509
31.4 onDraw(.)方法内的图形绘制 513
31.5 挑战练习:设备旋转问题 515
31.6 挑战练习:旋转矩形框 515
第32章 属性动画 516
32.1 建立场景 516
32.2 简单属性动画 519
32.3 播放多个动画 525
32.4 深入学习:其他动画API 527
32.5 挑战练习 527
第33章 地理位置和Play服务 528
33.1 地理位置和定位类库 528
33.2 创建Locatr项目 529
33.3 Play服务定位和模拟器 530
33.4 创建Locatr应用 532
33.5 配置Google Play服务 534
33.6 使用Google Play服务 536
33.7 基于地理位置的Flickr搜索 538
33.8 获取定位数据 539
33.9 获取运行时权限 542
33.10 寻找并显示图片 546
33.11 挑战练习:权限使用理由 548
33.12 挑战练习:进度指示器 549
第34章 使用地图 550
34.1 导入Play地图服务库 550
34.2 Android上的地图服务 550
34.3 获取Maps API key 550
34.4 创建地图 552
34.5 获取更多地理位置数据 553
34.6 使用地图 556
34.7 深入学习:团队开发和API key 560
第35章 material design 562
35.1 material surface 562
35.2 动画工具 566
35.3 新的视图组件 571
35.4 深入学习material design 574
第36章 编后语 575
36.1 终极挑战 575
36.2 关于我们 575
36.3 致谢 576
说说
《》如果你
《Android编程权威指南(第3版)》不太适合完全零基础入门,它更适合作为你的第二本Android开发书,相信更多读者选择了《第一行代码》作为第一本书,而这本更多关注点是帮你上手项目实战。
你是否是Android开发者?你选了这本书吗?留言区分享自己的感悟,精选评论中挑选 3 位赠送《Android编程权威指南(第3版)》,另外,根据后台时间先后,留言第48楼的读者将获得一本《Android编程权威指南(第3版)》(少于此留言数,空缺)。截止7月10日14:00。
☟ 【阅读原文】亚马逊购买《Android编程权威指南(第3版)》