展开全部

主编推荐语

美国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日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。