美亚Android编程第一书《Android编程权威指南》

2017 年 7 月 6 日 图灵教育 图小鹿整理

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参考书,方便查阅。


5. Android版本

主要针对当前广泛使用的各个系统版本(Android 4.4 至 Android 7.1)。虽然更老的系统版本仍有人在用,但对于大多数开发者来说,为这部分人开发应用就是个赔本的买卖。如果应用确实需要支持 Android 4.4 之前的系统版本,请参考本书第2版(Android 4.1及以上版本)和第1版(Android 2.3及以上版本)的相关内容。

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章 AndroidMVC设计模式  26

2.1 创建新类  26

2.2 AndroidMVC设计模式  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 fragmentfragment管理器  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  RecyclerViewViewHolderAdapter  137

8.4 绑定列表项  145

8.5 响应点击  147

8.6 深入学习:ListViewGridView  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  FragmentStatePagerAdapterFragmentPagerAdapter 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  activityfragment的托管者  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章 LooperHandlerHandlerThread

26.1 配置RecyclerView以显示图片  420

26.2 批量下载缩略图  422

26.3 与主线程通信  423

26.4 创建并启动后台线程  424

26.5    Messagemessage 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 深入学习:JobSchedulerJobService 469

28.10 挑战练习:在Lollipop设备上使用JobService 472

28.11 深入学习:sync adapter472


29章 broadcast intent

29.1 普通intentbroadcast 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开发者?你选了这本书吗?留言区分享自己的感悟,精选评论中挑选 位赠送《Android编程权威指南(第3版)》,另外,根据后台时间先后,留言第48楼的读者将获得一本《Android编程权威指南(第3版)》(少于此留言数,空缺)截止7月10日14:00。



【阅读原文】亚马逊购买《Android编程权威指南(第3版)》

登录查看更多
0

相关内容

Android(安卓)是一种以 Linux 为基础开发的开放源代码的操作系统,主要应用于便携设备。2005 年,Android 公司被 Google 收购,随后 Google 联合制造商组成开放手机联盟。Android 已从智能手机领域逐渐扩展到平板电脑、智能电视(及机顶盒)、游戏机、物联网、智能手表、车载系统、VR以及PC等领域。
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
【新书】Python编程基础,669页pdf
专知会员服务
186+阅读 · 2019年10月10日
吃鸡手游竟然是Python写的?
机器学习算法与Python学习
6+阅读 · 2018年9月11日
各编程领域最好的入门书籍
程序猿
27+阅读 · 2018年7月29日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
这几本Python新书特别赞
图灵教育
19+阅读 · 2018年3月1日
福利一丨20本技术好书相送,请查收
InfoQ
7+阅读 · 2017年10月24日
Arxiv
11+阅读 · 2019年6月19日
Arxiv
9+阅读 · 2019年4月19日
Pluralistic Image Completion
Arxiv
8+阅读 · 2019年3月11日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
7+阅读 · 2018年6月1日
Arxiv
10+阅读 · 2018年3月23日
Arxiv
4+阅读 · 2018年1月19日
VIP会员
相关资讯
吃鸡手游竟然是Python写的?
机器学习算法与Python学习
6+阅读 · 2018年9月11日
各编程领域最好的入门书籍
程序猿
27+阅读 · 2018年7月29日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
这几本Python新书特别赞
图灵教育
19+阅读 · 2018年3月1日
福利一丨20本技术好书相送,请查收
InfoQ
7+阅读 · 2017年10月24日
相关论文
Arxiv
11+阅读 · 2019年6月19日
Arxiv
9+阅读 · 2019年4月19日
Pluralistic Image Completion
Arxiv
8+阅读 · 2019年3月11日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
7+阅读 · 2018年6月1日
Arxiv
10+阅读 · 2018年3月23日
Arxiv
4+阅读 · 2018年1月19日
Top
微信扫码咨询专知VIP会员