计算机
类型
8.9
豆瓣评分
可以朗读
语音朗读
478千字
字数
2021-03-01
发行日期
展开全部
主编推荐语
美国Big Nerd Ranch移动开发实战Android编程权威指南,全方位更新Kotlin与Jetpack。
内容简介
Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共32章,详细介绍了七个Android应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。第4版较之前版本做了重大更新,每一章的内容都做了修改。开发语言从Java换成了Kotlin。全面引入了Android Jetpack组件库并开始使用第三方库。
目录
- 版权信息
- 献词
- 如何学习Android开发
- 阅读前提
- 第4版有哪些变化
- Kotlin与Java
- 如何使用本书
- 本书内容
- 挑战练习
- 深入学习
- 版式说明
- 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 创建新类
- 2.2 Android与MVC设计模式
- 使用MVC设计模式的好处
- 2.3 更新视图层
- 2.4 更新控制器层
- 2.5 添加图标资源
- 2.5.1 向项目中添加资源
- 2.5.2 在XML文件中引用资源
- 2.6 屏幕像素密度
- 2.7 在物理设备上运行应用
- 2.8 挑战练习:为TextView添加监听器
- 2.9 挑战练习:添加后退按钮
- 2.10 挑战练习:从按钮到图标按钮
- 第3章 activity的生命周期
- 3.1 旋转GeoQuiz应用
- 3.2 activity状态与生命周期回调
- 3.3 日志跟踪理解activity生命周期
- 3.3.1 输出日志信息
- 3.3.2 使用LogCat
- 3.4 activity生命周期如何响应用户操作
- 3.4.1 暂时离开activity
- 3.4.2 结束使用activity
- 3.4.3 旋转activity
- 3.5 设备配置改变与activity生命周期
- 创建横屏模式布局
- 3.6 深入学习:UI刷新与多窗口模式
- 3.7 深入学习:日志记录的级别与函数
- 3.8 挑战练习:禁止一题多答
- 3.9 挑战练习:答题评分
- 第4章 UI状态的保存与恢复
- 4.1 引入ViewModel依赖
- 4.2 添加ViewModel
- 4.2.1 ViewModel生命周期与ViewModelProvider
- 4.2.2 向ViewModel添加数据
- 4.3 进程销毁时保存数据
- 4.3.1 覆盖onSaveInstanceState(Bundle)函数
- 4.3.2 保留实例状态与activity记录
- 4.4 ViewModel与保存实例状态
- 4.5 深入学习:Jetpack、AndroidX与架构组件
- 4.6 深入学习:解决问题要彻底
- 第5章 Android应用的调试
- 5.1 异常与栈跟踪
- 5.1.1 诊断应用异常
- 5.1.2 记录栈跟踪日志
- 5.1.3 设置断点
- 5.2 Android特有的调试工具
- 5.2.1 使用Android Lint
- 5.2.2 R类的问题
- 5.3 挑战练习:探索布局检查器
- 5.4 挑战练习:探索Android性能分析器
- 第6章 第二个activity
- 6.1 创建第二个activity
- 6.1.1 创建新的activity
- 6.1.2 创建新的activity子类
- 6.1.3 在manifest配置文件中声明activity
- 6.1.4 为MainActivity添加CHEAT!按钮
- 6.2 启动activity
- 基于intent的通信
- 6.3 activity间的数据传递
- 6.3.1 使用intent extra
- 6.3.2 从子activity获取返回结果
- 6.4 activity的使用与管理
- 6.5 挑战练习:堵住作弊漏洞
- 6.6 挑战练习:按题记录作弊状态
- 第7章 Android SDK版本与兼容
- 7.1 Android SDK版本
- 7.2 Android编程与兼容性问题
- 7.2.1 比较合理的版本
- 7.2.2 SDK最低版本
- 7.2.3 SDK目标版本
- 7.2.4 SDK编译版本
- 7.2.5 安全添加新版本API中的代码
- 7.2.6 JETPACK库
- 7.3 使用Android开发者文档
- 7.4 挑战练习:报告编译版本
- 7.5 挑战练习:限制作弊次数
- 第8章 UI fragment与fragment管理器
- 8.1 UI设计的灵活性需求
- 8.2 引入fragment
- 8.3 着手开发CriminalIntent
- 创建新项目
- 8.4 创建Crime数据类
- 8.5 创建UI fragment
- 8.5.1 定义CrimeFragment的布局
- 8.5.2 创建CrimeFragment类
- 8.6 托管UI fragment
- 8.6.1 定义容器视图
- 8.6.2 向FragmentManager中添加UI fragment
- 8.7 采用fragment的应用架构
- 使用fragment的理由
- 第9章 使用RecyclerView显示列表
- 9.1 添加新Fragment和ViewModel
- ViewModel生命周期与fragment
- 9.2 添加RecyclerView
- 9.3 创建列表项视图布局
- 9.4 ViewHolder实现
- 9.5 使用Adapter填充RecyclerView
- 为RecyclerView配置adapter
- 9.6 循环使用视图
- 9.7 清理绑定
- 9.8 响应点击
- 9.9 深入学习:ListView与GridView
- 9.10 挑战练习:RecyclerView的ViewType
- 第10章 使用布局与部件创建用户界面
- 10.1 初识ConstraintLayout布局
- 10.2 图形布局编辑器
- 10.3 使用ConstraintLayout
- 10.3.1 腾出空间
- 10.3.2 添加部件
- 10.3.3 约束的工作原理
- 10.3.4 编辑属性
- 10.3.5 动态设置列表项
- 10.4 深入学习布局属性
- 样式、主题及主题属性
- 10.5 深入学习:边距与内边距
- 10.6 深入学习:ConstraintLayout的发展动态
- 10.7 挑战练习:日期格式化
- 第11章 数据库与Room库
- 11.1 Room架构组建库
- 11.2 创建数据库
- 11.2.1 定义实体
- 11.2.2 创建数据库类
- 11.3 定义数据库访问对象
- 11.4 使用仓库模式访问数据库
- 11.5 测试数据库访问
- 上传测试数据
- 11.6 应用线程
- 后台线程
- 11.7 使用LiveData
- 观察LiveData
- 11.8 挑战练习:解决Schema警告
- 11.9 深入学习:单例
- 第12章 Fragment Navigation
- 12.1 单Activity多Fragment
- 12.1.1 Fragment回调接口
- 12.1.2 替换fragment
- 12.2 Fragment argument
- 12.2.1 将argument附加到fragment
- 12.2.2 获取argument
- 12.3 使用LiveData数据转换
- 12.4 更新数据库
- 12.4.1 使用executor
- 12.4.2 数据库写入与fragment生命周期
- 12.5 深入学习:为何要用Fragment Argument
- 12.6 深入学习:Navigation架构组件库
- 12.7 挑战练习:实现高效的RecyclerView刷新
- 第13章 对话框
- 13.1 创建DialogFragment
- 显示DialogFragment
- 13.2 fragment间的数据传递
- 13.2.1 传递数据给DatePickerFragment
- 13.2.2 返回数据给CrimeFragment
- 13.3 挑战练习:时间选择对话框
- 第14章 应用栏
- 14.1 AppCompat默认应用栏
- 14.2 应用栏菜单
- 14.2.1 在XML文件中定义菜单
- 14.2.2 创建菜单
- 14.2.3 响应菜单项选择
- 14.3 使用Android Asset Studio
- 14.4 深入学习:应用栏、操作栏与工具栏
- 14.5 深入学习:AppCompat版应用栏
- 14.6 挑战练习:RecyclerView空视图
- 第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 挑战练习:又一个隐式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 默认资源
- 17.1.2 检查资源本地化完成情况
- 17.1.3 区域修饰符
- 17.2 配置修饰符
- 17.2.1 可用资源优先级排定
- 17.2.2 多重配置修饰符
- 17.2.3 寻找最匹配的资源
- 17.3 测试备选资源
- 17.4 深入学习:确定设备屏幕尺寸
- 17.5 挑战练习:日期显示本地化
- 第18章 Android辅助功能
- 18.1 TalkBack
- 18.1.1 点击浏览
- 18.1.2 线性浏览
- 18.2 实现非文字型元素可读
- 18.2.1 添加内容描述
- 18.2.2 实现部件可聚焦
- 18.3 提升辅助体验
- 18.4 深入学习:使用辅助功能扫描器
- 18.5 挑战练习:优化列表项
- 18.6 挑战练习:补全上下文信息
- 18.7 挑战练习:事件主动通知
- 第19章 数据绑定与MVVM
- 19.1 为何要用MVVM架构
- 19.2 MVVM View Model与Jetpack ViewModel
- 19.3 创建BeatBox应用
- 19.4 实现简单的数据绑定
- 19.5 导入assets
- 19.6 处理assets
- 19.7 使用assets
- 19.8 绑定数据
- 19.8.1 创建视图模型
- 19.8.2 绑定至视图模型
- 19.8.3 绑定数据观察
- 19.9 深入学习:数据绑定再探
- 19.9.1 lambda表达式
- 19.9.2 更多语法糖
- 19.9.3 BindingAdapter
- 19.10 深入学习:LiveData和数据绑定
- 第20章 音频播放与单元测试
- 20.1 创建SoundPool
- 20.2 访问Assets
- 20.3 加载音频文件
- 20.4 播放音频
- 20.5 测试依赖
- 20.6 创建测试类
- 20.7 配置测试类
- 配置测试对象
- 20.8 编写测试函数
- 测试对象交互
- 20.9 数据绑定回调
- 20.10 释放音频
- 20.11 深入学习:整合测试
- 20.12 深入学习:模拟对象与测试
- 20.13 挑战练习:播放进度控制
- 20.14 挑战练习:设备旋转问题
- 第21章 样式与主题
- 21.1 颜色资源
- 21.2 样式
- 样式继承
- 21.3 主题
- 修改默认主题
- 21.4 添加主题颜色
- 21.5 覆盖主题属性
- 主题探秘
- 21.6 修改按钮属性
- 21.7 深入学习:样式继承拾遗
- 21.8 深入学习:引用主题属性
- 第22章 XML drawable
- 22.1 统一按钮样式
- 22.2 shape drawable
- 22.3 state list drawable
- 22.4 layer list drawable
- 22.5 深入学习:为什么要用XML drawable
- 22.6 深入学习:使用mipmap图像
- 22.7 深入学习:使用9-patch图像
- 22.8 挑战练习:按钮主题
- 第23章 深入学习intent和任务
- 23.1 创建NerdLauncher项目
- 23.2 解析隐式intent
- 23.3 在运行时创建显式intent
- 23.4 任务与回退栈
- 23.4.1 在任务间切换
- 23.4.2 启动新任务
- 23.5 用NerdLauncher当主屏幕
- 23.6 深入学习:进程与任务
- 23.7 深入学习:并发文档
- 23.8 挑战练习:应用图标
- 第24章 HTTP与后台任务
- 24.1 创建PhotoGallery应用
- 24.2 Retrofit网络连接基本
- 24.2.1 定义Retrofit API接口
- 24.2.2 构建Retrofit对象并创建API实例
- 24.2.3 执行网络请求
- 24.2.4 获取网络使用权限
- 24.2.5 使用仓库模式联网
- 24.3 从Flickr获取JSON数据
- 反序列化JSON数据
- 24.4 应对设备配置改变
- 24.5 在RecyclerView里显示结果
- 24.6 深入学习:其他JSON数据解析器和数据格式
- 24.7 深入学习:撤销网络请求
- 24.8 深入学习:管理依赖
- 24.9 挑战练习:自定义Gson反序列化器
- 24.10 挑战练习:分页
- 24.11 挑战练习:动态调整网格列
- 第25章 Looper、Handler和HandlerThread
- 25.1 配置RecyclerView以显示图片
- 25.2 准备下载数据
- 25.3 批量下载缩略图
- 25.4 创建后台线程
- 25.4.1 创建生命周期感知线程
- 25.4.2 启停HandlerThread
- 25.5 Message与message handler
- 25.5.1 剖析Message
- 25.5.2 剖析Handler
- 25.5.3 使用handler
- 25.5.4 传递handler
- 25.6 观察视图的生命周期
- 25.7 保留fragment
- 25.7.1 设备旋转与保留fragment
- 25.7.2 是否保留fragment
- 25.8 深入学习:解决图片下载问题
- 25.9 深入学习:StrictMode
- 25.10 挑战练习:观察视图LifecycleOwner的LiveData
- 25.11 挑战练习:优化ThumbnailDownloader
- 25.12 挑战练习:预加载以及缓存
- 第26章 搜索
- 26.1 搜索Flickr网站
- 26.2 使用SearchView
- 响应用户搜索
- 26.3 使用sharedpreferences实现轻量级数据存储
- 26.4 优化应用
- 26.5 用Android KTX编辑SharedPreferences
- 26.6 挑战练习:优化PhotoGallery应用
- 第27章 WorkManager
- 27.1 创建Worker类
- 27.2 调度工作
- 27.3 检查新图片
- 27.4 通知用户
- 27.5 服务的用户控制
- 第28章 broadcast intent
- 28.1 普通intent与broadcast intent
- 28.2 过滤前台通知
- 28.2.1 发送broadcast intent
- 28.2.2 创建并登记standalone receiver
- 28.2.3 使用私有权限限制broadcast
- 28.2.4 创建并登记动态receiver
- 28.2.5 使用有序broadcast收发数据
- 28.3 receiver与长时运行任务
- 28.4 深入学习:本地事件
- 28.4.1 使用EventBus
- 28.4.2 使用RxJava
- 28.5 深入学习:受限的Broadcast Receiver
- 28.6 深入学习:探测fragment的状态
- 第29章 网页浏览
- 29.1 最后一段Flickr数据
- 29.2 简单方式:使用隐式intent
- 29.3 较难的方式:使用WebView
- 使用WebChromeClient优化WebView显示
- 29.4 处理WebView的设备旋转问题
- 自己处理配置更改的风险
- 29.5 WebView与定制UI
- 29.6 深入学习:注入JavaScript对象
- 29.7 深入学习:WebView升级
- 29.8 深入学习:Chrome Custom Tabs
- 29.9 挑战练习:使用回退键浏览历史网页
- 第30章 定制视图与触摸事件
- 30.1 创建DragAndDraw项目
- 30.2 创建定制视图
- 创建BoxDrawingView视图
- 30.3 处理触摸事件
- 跟踪运动事件
- 30.4 onDraw(Canvas)函数内的图形绘制
- 30.5 深入学习:GestureDetector
- 30.6 挑战练习:设备旋转问题
- 30.7 挑战练习:旋转矩形框
- 30.8 挑战练习:辅助功能支持
- 第31章 属性动画
- 31.1 建立场景
- 31.2 简单属性动画
- 31.2.1 视图转换属性
- 31.2.2 使用不同的interpolator
- 31.2.3 色彩渐变
- 31.3 播放多个动画
- 31.4 深入学习:其他动画API
- 31.4.1 传统动画工具
- 31.4.2 转场
- 31.5 挑战练习
- 第32章 编后语
- 32.1 终极挑战
- 32.2 插个广告
- 32.3 致谢
- 作者简介
- 看完了
- 版权声明
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。