万本电子书0元读

万本电子书0元读

顶部广告

Android编程权威指南(第3版)电子书

威望——源自大名鼎鼎的Big Nerd Ranch训练营培训讲义,该训练营已经为微软、Google、Facebook等行业巨头培养了众多专业人才。 全面——涵盖Android发所有bi备理论概念和技术知识,从Android 4.4到Android 7.0都适用。 实用——8个Android应用发实战项目,传授一线发经验。 易懂——以循序渐的方式精心编排章节,一步一步写出Android应用。 时新——在前两版的基础上,新增数据绑定、MVVM架构、Android辅助功能等内容。

售       价:¥

纸质售价:¥114.80购买纸书

305人正在读 | 4人评论 6.2

作       者:[美] 比尔·菲利普斯 克里斯·斯图尔特 克莉丝汀·马西卡诺(Bill Phillips, Chris Stewart, Kristin Marsicano)

出  版  社:人民邮电出版社

出版时间:2017-06-01

字       数:54.6万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:此类商品不支持退换货,不支持下载打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(8条)
  • 读书简介
  • 目录
  • 累计评论(8条)
Big Nerd Ranch是美国一家专业的移动发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共36章,详细介绍了8个Android应用的发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和发技巧,获得宝贵的发经验。第3版较之前版本增加了对数据绑定等新工具的介绍,同时新增了针对单元测试、辅助功能和MVVM架构等主题的章节。 Big Nerd Ranch是美国一家专业的移动发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共36章,详细介绍了8个Android应用的发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和发技巧,获得宝贵的发经验。第3版较之前版本增加了对数据绑定等新工具的介绍,同时新增了针对单元测试、辅助功能和MVVM架构等主题的章节。
【推荐语】
威望——源自大名鼎鼎的Big Nerd Ranch训练营培训讲义,该训练营已经为微软、Google、Facebook等行业巨头培养了众多专业人才。 全面——涵盖Android发所有bi备理论概念和技术知识,从Android 4.4到Android 7.0都适用。 实用——8个Android应用发实战项目,传授一线发经验。 易懂——以循序渐的方式精心编排章节,一步一步写出Android应用。 时新——在前两版的基础上,新增数据绑定、MVVM架构、Android辅助功能等内容。
【作者】
Bill Phillips Big Nerd Ranch资深讲师。他与人合作发了广受好评的Android训练营培训课程,并为之编写教材(包括本书的第1版和第2版)。Bill一直坚持撰写博客、阅读各类文学作品、作曲奏乐以及著书。 Chris Stewart Big Nerd Ranch的Android团队主管、Android训练营资深讲师。他致力于不断取得步和精技能。工作之余,Chris喜欢远足和旅行。 Kristin Marsicano Big Nerd Ranch资深讲师、Android发者。她喜欢分享知识,对学习、软件发以及二者的交集充满热情。在授课和发应用之余,Kristin会为家人烹调美食、练习瑜伽或学习新知识。 王明发 毕业于华东理工大学。软件发及项目管理者,拥有近十年的软件发及项目管理经验;除了翻译本书前两版之外,另译有《写给大家看的项目管理书(第3版)》。
目录展开

献词

致谢

如何学习Android开发

阅读前提

第3版有哪些新内容

如何使用本书

本书内容

挑战练习

深入学习

编码风格

版式说明

Android版本

电子书

开发必备工具

Android Studio的下载与安装

下载早期版本的SDK

硬件设备

第 1 章 Android开发初体验

1.1 Android开发基础

1.2 创建Android项目

1.3 Android Studio使用导航

1.4 用户界面设计

1.4.1 视图层级结构

1.4.2 组件属性

1.4.3 创建字符串资源

1.4.4 预览布局

1.5 从布局XML到视图对象

资源与资源ID

1.6 组件的实际应用

1.6.1 引用组件

1.6.2 设置监听器

1.7 创建提示消息

使用代码自动补全

1.8 使用模拟器运行应用

1.9 深入学习:Android编译过程

Android编译工具

1.10 关于挑战练习

1.11 挑战练习:定制toast消息

第 2 章 Android与MVC设计模式

2.1 创建新类

生成getter方法与setter方法

2.2 Android与MVC设计模式

使用MVC设计模式的好处

2.3 更新视图层

2.4 更新控制器层

2.5 在物理设备上运行应用

2.5.1 连接设备

2.5.2 配置设备用于应用开发

2.6 添加图标资源

2.6.1 向项目中添加资源

2.6.2 在XML文件中引用资源

2.7 挑战练习:为TextView添加监听器

2.8 挑战练习:添加后退按钮

2.9 挑战练习:从按钮到图标按钮

第 3 章 activity的生命周期

3.1 日志跟踪理解activity生命周期

3.1.1 输出日志信息

3.1.2 使用LogCat

3.1.3 activity生命周期实例解析

3.2 设备旋转与activity生命周期

设备配置与备选资源

3.3 保存数据以应对设备旋转

覆盖onSaveInstanceState(Bundle)方法

3.4 再探activity生命周期

3.5 深入学习:activity内存清理现状

3.6 深入学习:日志记录的级别与方法

3.7 挑战练习:禁止一题多答

3.8 挑战练习:评分

第 4 章 Android应用的调试

4.1 异常与栈跟踪

4.1.1 诊断应用异常

4.1.2 记录栈跟踪日志

4.1.3 设置断点

4.1.4 使用异常断点

4.2 Android特有的调试工具

4.2.1 使用Android Lint

4.2.2 R类的问题

4.3 挑战练习:探索布局检查器

4.4 挑战练习:探索内存分配跟踪

第 5 章 第二个activity

5.1 创建第二个activity

5.1.1 创建新的activity

5.1.2 创建新的activity子类

5.1.3 在manifest配置文件中声明activity

5.1.4 为QuizActivity添加CHEAT按钮

5.2 启动activity

基于intent的通信

5.3 activity间的数据传递

5.3.1 使用intent extra

5.3.2 从子activity获取返回结果

5.4 activity的使用与管理

5.5 挑战练习:堵住漏洞

第 6 章 Android SDK版本与兼容

6.1 Android SDK版本

6.2 Android编程与兼容性问题

6.2.1 比较合理的版本

6.2.2 SDK最低版本

6.2.3 SDK目标版本

6.2.4 SDK编译版本

6.2.5 安全添加新版本API中的代码

6.3 使用Android开发者文档

6.4 挑战练习:报告编译版本

6.5 挑战练习:限制作弊次数

第 7 章 UI fragment与fragment管理器

7.1 UI设计的灵活性需求

7.2 引入fragment

7.3 着手开发CriminalIntent

7.3.1 创建新项目

7.3.2 两类fragment

7.3.3 在Android Studio中增加依赖关系

7.3.4 创建Crime类

7.4 托管UI fragment

7.4.1 fragment的生命周期

7.4.2 托管的两种方式

7.4.3 定义容器视图

7.5 创建UI fragment

7.5.1 定义CrimeFragment的布局

7.5.2 创建CrimeFragment类

7.6 向FragmentManager添加UI fragment

7.6.1 fragment事务

7.6.2 FragmentManager与fragment生命周期

7.7 采用fragment的应用架构

使用fragment的理由

7.8 深入学习:fragment与支持库

7.9 深入学习:为什么优先使用支持库版fragment

第 8 章 使用RecyclerView显示列表

8.1 升级CriminalIntent应用的模型层

单例与数据集中存储

8.2 使用抽象activity托管fragment

8.2.1 通用型fragment托管布局

8.2.2 抽象activity类

8.3 RecyclerView、ViewHolder和Adapter

8.3.1 ViewHolder和Adapter

8.3.2 使用RecyclerView

8.3.3 列表项视图

8.3.4 实现ViewHolder和Adapter

8.4 绑定列表项

8.5 响应点击

8.6 深入学习:ListView和GridView

8.7 深入学习:单例

8.8 挑战练习:RecyclerView ViewType

第 9 章 使用布局与组件创建用户界面

9.1 使用图形布局工具

9.2 引入ConstraintLayout

9.2.1 使用ConstraintLayout

9.2.2 约束编辑器

9.2.3 腾出空间

9.2.4 添加组件

9.2.5 约束的XML形式

9.2.6 编辑属性

9.2.7 动态设置列表项

9.3 深入学习布局属性

9.3.1 dp、sp以及屏幕像素密度

9.3.2 边距与内边距

9.3.3 样式、主题及主题属性

9.3.4 Android应用的设计原则

9.4 图形布局工具使用小结

9.5 挑战练习:日期格式化

第 10 章 使用fragment argument

10.1 从fragment中启动activity

10.1.1 附加extra信息

10.1.2 获取extra信息

10.1.3 使用Crime数据更新CrimeFragment视图

10.1.4 直接获取extra信息的缺点

10.2 fragment argument

10.2.1 附加argument给fragment

10.2.2 获取argument

10.3 刷新显示列表项

10.4 通过fragment获取返回结果

10.5 深入学习:为何要用fragment argument

10.6 挑战练习:实现高效的RecyclerView刷新

10.7 挑战练习:优化CrimeLab的表现

第 11 章 使用ViewPager

11.1 创建CrimePagerActivity

11.1.1 ViewPager与PagerAdapter

11.1.2 整合并配置使用CrimePagerActivity

11.2 FragmentStatePagerAdapter与FragmentPagerAdapter

11.3 深入学习:ViewPager的工作原理

11.4 深入学习:以代码的方式创建视图

11.5 挑战练习:恢复CrimeFragment的边距

11.6 挑战练习:添加Jump to First按钮和Jump to Last按钮

第 12 章 对话框

12.1 创建DialogFragment

12.1.1 显示DialogFragment

12.1.2 设置对话框的显示内容

12.2 fragment间的数据传递

12.2.1 传递数据给DatePickerFragment

12.2.2 返回数据给CrimeFragment

12.3 挑战练习:更多对话框

12.4 挑战练习:实现响应式DialogFragment

第 13 章 工具栏

13.1 AppCompat

使用AppCompat库

13.2 工具栏菜单

13.2.1 在XML文件中定义菜单

13.2.2 创建菜单

13.2.3 响应菜单项选择

13.3 实现层级式导航

层级式导航的工作原理

13.4 可选菜单项

13.4.1 切换菜单项标题

13.4.2 “还有个问题”

13.5 深入学习:工具栏与操作栏

13.6 挑战练习:删除crime记录

13.7 挑战练习:复数字符串资源

13.8 挑战练习:用于RecyclerView的空视图

第 14 章 SQLite数据库

14.1 定义schema

14.2 创建初始数据库

14.2.1 使用Android Device Monitor查看文件

14.2.2 处理数据库相关问题

14.3 修改CrimeLab类

14.4 写入数据库

14.4.1 使用ContentValues

14.4.2 插入和更新记录

14.5 读取数据库

14.5.1 使用CursorWrapper

14.5.2 创建模型层对象

14.6 深入学习:数据库高级主题介绍

14.7 深入学习:应用上下文

14.8 挑战练习:删除crime记录

第 15 章 隐式intent

15.1 添加按钮组件

15.2 添加嫌疑人信息至模型层

15.3 使用格式化字符串

15.4 使用隐式intent

15.4.1 隐式intent的组成

15.4.2 发送消息

15.4.3 获取联系人信息

15.4.4 检查可响应任务的activity

15.5 挑战练习:ShareCompat

15.6 挑战练习:又一个隐式intent

第 16 章 使用intent拍照

16.1 布置照片

16.2 文件存储

16.2.1 使用FileProvider

16.2.2 指定照片存放位置

16.3 使用相机intent

触发拍照

16.4 缩放和显示位图

16.5 功能声明

16.6 挑战练习:优化照片显示

16.7 挑战练习:优化缩略图加载

第 17 章 双版面主从用户界面

17.1 增加布局灵活性

17.1.1 修改SingleFragmentActivity

17.1.2 创建包含两个fragment容器的布局

17.1.3 使用别名资源

17.1.4 创建平板设备专用可选资源

17.2 activity:fragment的托管者

fragment回调接口

17.3 深入学习:设备屏幕尺寸的确定

17.4 挑战练习:添加滑动删除功能

第 18 章 应用本地化

18.1 资源本地化

18.1.1 默认资源

18.1.2 检查资源本地化完成情况

18.1.3 区域修饰符

18.2 配置修饰符

18.2.1 可用资源优先级排定

18.2.2 多重配置修饰符

18.2.3 寻找最匹配的资源

18.3 测试备选资源

18.4 挑战练习:日期本地化

第 19 章 Android辅助功能

19.1 TalkBack

19.1.1 点击浏览

19.1.2 线性浏览

19.2 实现非文字型元素可读

19.2.1 添加内容描述

19.2.2 实现组件可聚焦

19.3 提升辅助体验

使用label提供上下文

19.4 深入学习:使用辅助功能扫描器

19.5 挑战练习:优化列表项

19.6 挑战练习:补全上下文信息

19.7 挑战练习:事件主动通知

第 20 章 数据绑定与MVVM

20.1 为何要用MVVM架构

20.2 创建BeatBox应用

简单的数据绑定

20.3 导入assets

20.4 处理assets

20.5 使用assets

20.6 绑定数据

20.6.1 创建视图模型

20.6.2 绑定至视图模型

20.6.3 绑定数据观察

20.7 访问assets

20.8 深入学习:数据绑定再探

20.8.1 lambda表达式

20.8.2 更多语法糖

20.8.3 BindingAdapter

20.9 深入学习:为何使用assets

20.10 深入学习:什么是non-assets

第 21 章 音频播放与单元测试

21.1 创建SoundPool

21.2 加载音频文件

21.3 播放音频

21.4 添加测试依赖

21.5 创建测试类

21.6 实现测试类

使用虚拟依赖项

21.7 编写测试方法

测试对象交互

21.8 数据绑定回调

21.9 释放音频

21.10 设备旋转和对象保存

21.10.1 保留fragment

21.10.2 设备旋转和已保留的fragment

21.11 深入学习:是否保留fragment

21.12 深入学习:Espresso与整合测试

21.13 深入学习:虚拟对象与测试

21.14 挑战练习:播放进度控制

第 22 章 样式与主题

22.1 颜色资源

22.2 样式

样式继承

22.3 主题

修改默认主题

22.4 添加主题颜色

22.5 覆盖主题属性

主题探秘

22.6 修改按钮属性

22.7 深入学习:样式继承拾遗

22.8 深入学习:引用主题属性

第 23 章 XML drawable

23.1 统一按钮样式

23.2 shape drawable

23.3 state list drawable

23.4 layer list drawable

23.5 深入学习:为什么要用XML drawable

23.6 深入学习:使用mipmap图像

23.7 深入学习:使用9-patch图像

23.8 挑战练习:按钮主题

第 24 章 深入学习intent和任务

24.1 创建NerdLauncher项目

24.2 解析隐式intent

24.3 在运行时创建显式intent

24.4 任务与回退栈

24.4.1 在任务间切换

24.4.2 启动新任务

24.5 使用NerdLauncher应用作为设备主屏幕

24.6 挑战练习:应用图标

24.7 深入学习:进程与任务

24.8 深入学习:并发文档

第 25 章 HTTP与后台任务

25.1 创建PhotoGallery应用

25.2 网络连接基本

获取网络使用权限

25.3 使用AsyncTask在后台线程上运行代码

25.4 线程与主线程

超越主线程

25.5 从Flickr获取JSON数据

解析JSON数据

25.6 从AsyncTask回到主线程

25.7 清理AsyncTask

25.8 深入学习:AsyncTask再探

25.9 深入学习:AsyncTask的替代方案

25.10 挑战练习:Gson

25.11 挑战练习:分页

25.12 挑战练习:动态调整网格列

第 26 章 Looper、Handler和HandlerThread

26.1 配置RecyclerView以显示图片

26.2 批量下载缩略图

26.3 与主线程通信

26.4 创建并启动后台线程

26.5 Message与message handler

26.5.1 剖析Message

26.5.2 剖析Handler

26.5.3 使用handler

26.5.4 传递handler

26.6 深入学习:AsyncTask与线程

26.7 深入学习:解决图片下载问题

26.8 深入学习:StrictMode

26.9 挑战练习:预加载以及缓存

第 27 章 搜索

27.1 搜索Flickr网站

27.2 使用SearchView

响应用户搜索

27.3 使用shared preferences实现轻量级数据存储

27.4 优化应用

27.5 挑战练习:深度优化PhotoGallery应用

第 28 章 后台服务

28.1 创建IntentService

28.2 服务的作用

后台网络连接安全

28.3 查找最新返回结果

28.4 使用AlarmManager延迟运行服务

28.4.1 合理控制服务启动的频度

28.4.2 PendingIntent

28.4.3 使用PendingIntent管理定时器

28.5 控制定时器

28.6 通知信息

28.7 挑战练习:可穿戴设备上的通知

28.8 深入学习:服务之细节

28.8.1 服务的能与不能

28.8.2 服务的生命周期

28.8.3 non-sticky服务

28.8.4 sticky服务

28.8.5 绑定服务

28.9 深入学习:JobScheduler和JobService

JobScheduler和未来的后台服务

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

28.11 深入学习:sync adapter

第 29 章 broadcast intent

29.1 普通intent和broadcast intent

29.2 接收系统broadcast:重启后唤醒

29.2.1 创建并登记standalone receiver

29.2.2 使用receiver

29.3 过滤前台通知消息

29.3.1 发送broadcast intent

29.3.2 创建并登记动态receiver

29.3.3 使用私有权限限制broadcast

29.3.4 使用有序broadcast收发数据

29.4 receiver与长时运行任务

29.5 深入学习:本地事件

29.5.1 使用EventBus

29.5.2 使用RxJava

29.6 深入学习:探测fragment的状态

第 30 章 网页浏览

30.1 最后一段Flickr数据

30.2 简单方式:隐式intent

30.3 较难方式:使用WebView

使用WebChromeClient优化WebView显示

30.4 处理WebView的设备旋转问题

自己处理配置更改的风险

30.5 深入学习:注入JavaScript对象

30.6 深入学习:WebView升级

30.7 挑战练习:使用后退键浏览历史网页

30.8 挑战练习:非HTTP链接支持

第 31 章 定制视图与触摸事件

31.1 创建DragAndDraw项目

31.2 创建定制视图

创建BoxDrawingView视图

31.3 处理触摸事件

跟踪运动事件

31.4 onDraw(...)方法内的图形绘制

31.5 挑战练习:设备旋转问题

31.6 挑战练习:旋转矩形框

第 32 章 属性动画

32.1 建立场景

32.2 简单属性动画

32.2.1 视图属性转换

32.2.2 使用不同的interpolator

32.2.3 色彩渐变

32.3 播放多个动画

32.4 深入学习:其他动画API

32.4.1 传统动画工具

32.4.2 转场

32.5 挑战练习

第 33 章 地理位置和Play服务

33.1 地理位置和定位类库

Google Play Service

33.2 创建Locatr项目

33.3 Play服务定位和模拟器

模拟定位数据

33.4 创建Locatr应用

33.5 配置Google Play服务

地理位置定位权限

33.6 使用Google Play服务

33.7 基于地理位置的Flickr搜索

33.8 获取定位数据

33.9 获取运行时权限

检查使用权限

33.10 寻找并显示图片

33.11 挑战练习:权限使用理由

33.12 挑战练习:进度指示器

第 34 章 使用地图

34.1 导入Play地图服务库

34.2 Android上的地图服务

34.3 获取Maps API key

34.4 创建地图

34.5 获取更多地理位置数据

34.6 使用地图

在地图上绘制

34.7 深入学习:团队开发和API key

第 35 章 material design

35.1 material surface

35.1.1 elevation和Z值

35.1.2 state list animator

35.2 动画工具

35.2.1 circular reveal

35.2.2 shared element transition

35.3 新的视图组件

35.3.1 card

35.3.2 floating action button

35.3.3 snackbar

35.4 深入学习material design

第 36 章 编后语

36.1 终极挑战

36.2 关于我们

36.3 致谢

累计评论(8条) 8个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部