Table of Contents 1. 序言 2. Android入门基础:从这里开始 i. 建立第一个App i. 创建Android项目 ii. 执行Android程序 iii. 建立简单的用户界面 iv. 启动其他的Activity ii. 添加ActionBar i. 建立ActionBar ii. 添加Action按钮 iii. 自定义ActionBar的风格 iv. ActionBar的覆盖层叠 iii. 兼容不同的设备 i. 适配不同的语言 ii. 适配不同的屏幕 iii. 适配不同的系统版本 iv. 管理Activity的生命周期 i. 启动与销毁Activity ii. 暂停与恢复Activity iii. 停止与重启Activity iv. 重新创建Activity v. 使用Fragment建立动态的UI i. 创建一个Fragment ii. 建立灵活动态的UI iii. Fragments之间的交互 vi. 数据保存 i. 保存到Preference ii. 保存到文件 iii. 保存到数据库 vii. 与其他应用的交互 i. Intent的发送 ii. 接收Activity返回的结果 iii. Intent过滤 3. Android分享操作 i. 分享简单的数据 i. 给其他App发送简单的数据 ii. 接收从其他App返回的数据 iii. 给ActionBar增加分享功能 ii. 分享文件 i. 建立文件分享 ii. 分享文件 iii. 请求分享一个文件 iv. 获取文件信息 iii. 使用NFC分享文件 i. 发送文件给其他设备 ii. 接收其他设备的文件 4. Android多媒体 i. 管理音频播放 i. 控制音量与音频播放 ii. 管理音频焦点 iii. 兼容音频输出设备 ii. 拍照 i. 简单的拍照 ii. 简单的录像 iii. 控制相机硬件 iii. 打印 i. 打印照片 ii. 打印HTML文档 iii. 打印自定义文档 5. Android图像与动画 i. 高效显示Bitmap i. 高效加载大图 ii. 非UI线程处理Bitmap iii. 缓存Bitmap iv. 管理Bitmap的内存占用 v. 在UI上显示Bitmap ii. 使用OpenGL ES显示图像 i. 建立OpenGL ES的环境 ii. 定义Shapes iii. 绘制Shapes iv. 运用投影与相机视图 v. 添加移动 vi. 响应触摸事件 iii. 添加动画 i. View间渐变 ii. 使用ViewPager实现屏幕侧滑 iii. 展示卡片翻转动画 iv. 缩放View v. 布局变更动画 6. Android网络连接与云服务 i. 无线连接设备 i. 使得网络服务可发现 ii. 使用WiFi建立P2P连接 iii. 使用WiFi P2P服务 ii. 执行网络操作 i. 连接到网络 ii. 管理网络 iii. 解析XML数据 iii. 高效下载 i. 为网络访问更加高效而优化下载 ii. 最小化更新操作的影响 iii. 避免下载多余的数据 iv. 根据网络类型改变下载模式 iv. 云同步 i. 使用备份API ii. 使用Google Cloud Messaging v. 解决云同步的保存冲突 vi. 使用Sync Adapter传输数据 i. 创建Stub授权器 ii. 创建Stub Content Provider iii. 创建Sync Adpater iv. 执行Sync Adpater vii. 使用Volley执行网络数据传输 i. 发送简单的网络请求 ii. 建立请求队列 iii. 创建标准的网络请求 iv. 实现自定义的网络请求 7. Android联系人与位置信息 i. Android联系人信息 i. 获取联系人列表 ii. 获取联系人详情 iii. 修改联系人信息 iv. 显示联系人头像 ii. Android位置信息 i. 获取当前位置 ii. 获取位置更新 iii. 显示位置地址 iv. 创建并监视异常区域 v. 识别用户的当下活动 vi. 使用模拟位置进行测试 8. Android可穿戴应用 i. 赋予Notification可穿戴特性 i. 创建Notification ii. 在Notifcation中接收语音输入 iii. 为Notification添加显示页面 iv. 以Stack的方式显示Notifications ii. 创建可穿戴的应用 i. 创建并执行可穿戴应用 ii. 创建自定义的布局 iii. 添加语音能力 iv. 打包可穿戴应用 v. 通过蓝牙进行调试 iii. 创建自定义的UI i. 定义Layouts ii. 创建Cards iii. 创建Lists iv. 创建2D-Picker v. 创建确认界面 vi. 退出全屏的Activity iv. 发送并同步数据 i. 访问可穿戴数据层 ii. 同步数据单元 iii. 传输资源 iv. 发送与接收消息 v. 处理数据层的事件 9. Android TV应用 i. 创建TV应用 i. 创建TV应用的第一步 ii. 处理TV硬件部分 iii. 创建TV的布局文件 iv. 创建TV的导航栏 ii. 创建TV播放应用 i. 创建目录浏览器 ii. 提供一个Card视图 iii. 创建详情页 iv. 显示正在播放卡片 iii. 帮助用户在TV上探索内容 i. TV上的推荐内容 ii. 使得TV App能够被搜索 iii. 使用TV应用进行搜索 iv. 创建TV游戏应用 v. 创建TV直播应用 vi. TV Apps Checklist 10. Android交互设计 i. 设计高效的导航 i. 规划屏幕界面与他们之间的关系 ii. 为多种大小的屏幕进行规划 iii. 提供向下和横向导航 iv. 提供向上和操作顺序导航 v. 综合:设计样例 App ii. 实现高效的导航 i. 使用Tabs创建Swipe视图 ii. 创建抽屉导航 iii. 提供向上的导航 iv. 提供向后的导航 v. 实现向下的导航 iii. 通知提示用户 i. 建立Notification ii. 当启动Activity时保留导航 iii. 更新Notification iv. 使用BigView风格 v. 显示Notification进度 iv. 增加搜索功能 i. 建立搜索界面 ii. 保存并搜索数据 iii. 保持向下兼容 v. 使得你的App内容可被Google搜索 i. 为App内容开启深度链接 ii. 为索引指定App内容 11. Android界面设计 i. 为多屏幕设计 i. 兼容不同的屏幕大小 ii. 兼容不同的屏幕密度 iii. 实现可适应的UI ii. 创建自定义View i. 创建自定义的View类 ii. 实现自定义View的绘制 iii. 使得View可交互 iv. 优化自定义View iii. 创建向后兼容的UI i. 抽象新的APIs ii. 代理至新的APIs iii. 使用旧的APIs实现新API的效果 iv. 使用版本敏感的组件 iv. 实现辅助功能 i. 开发辅助程序 ii. 开发辅助服务 v. 管理系统UI i. 淡化系统Bar ii. 隐藏系统Bar iii. 隐藏导航Bar iv. 全屏沉浸式应用 v. 响应UI可见性的变化 vi. 创建使用Material Design的应用 i. 开始使用Material Design ii. 使用Material的主题 iii. 创建Lists与Cards iv. 定义Shadows与Clipping视图 v. 使用Drawables vi. 自定义动画 vii. 维护兼容性 12. Android用户输入 i. 使用触摸手势 i. 检测常用的手势 ii. 跟踪手势移动 iii. Scroll手势动画 iv. 处理多触摸手势 v. 拖拽与缩放 vi. 管理ViewGroup中的触摸事件 ii. 处理键盘输入 i. 指定输入法类型 ii. 处理输入法可见性 iii. 兼容键盘导航 iv. 处理按键动作 iii. 兼容游戏控制器 i. 处理控制器输入动作 ii. 支持不同的Android系统版本 iii. 支持多个控制器 13. Android后台任务 i. 在IntentService中执行后台任务 i. 创建IntentService ii. 发送工作任务到IntentService iii. 报告后台任务执行状态 ii. 使用CursorLoader在后台加载数据 i. 使用CursorLoader执行查询任务 ii. 处理查询的结果 iii. 管理设备的唤醒状态 i. 保持设备的唤醒 ii. 制定重复定时的任务 14. Android性能优化 i. 管理应用的内存 ii. 代码性能优化建议 iii. 提升Layout的性能 i. 优化layout的层级 ii. 使用include标签重用layouts iii. 按需加载视图 iv. 使得ListView滑动顺畅 iv. 优化电池寿命 i. 监测电量与充电状态 ii. 判断与监测Docking状态 iii. 判断与监测网络连接状态 iv. 根据需要操作Broadcast接受者 v. 多线程操作 i. 在一个线程中执行一段特定的代码 ii. 为多线程创建线程池 iii. 启动与停止线程池中的线程 iv. 与UI线程通信 vi. 避免出现程序无响应ANR vii. JNI使用指南 viii. 优化多核处理器(SMP)下的Android程序 15. Android安全与隐私 i. Security Tips ii. 使用HTTPS与SSL iii. 为防止SSL漏洞而更新Security iv. 企业版App i. 使用设备管理条例增强安全性 16. Android测试程序 i. 测试你的Activity i. 建立测试环境 ii. 创建与执行测试用例 iii. 测试UI组件 iv. 创建单元测试 v. 创建功能测试 17. Glossary Google Android官方培训课程中文版(v0.9) Google Android团队在2012年的时候开设了Android Training板块 - http://developer.android.com/training/index.html,这些 课程是学习Android应用开发的绝佳资料。 我们通过Github发起开源协作翻译的项目,完成中文版的输出,欢迎大家传阅学 习! 项目难免会有很多写的不对不好的地方,欢迎读者加入此协作项目,进行纠错,为完善这份教程贡献你的一点力量! Github托管主页 https://github.com/kesenhoo/android-training-course-in-chinese 请读者点击Star进行关注并支持! 在线阅读 http://hukai.me/android-training-course-in-chinese/index.html 离线文档 下载链接 PDF: http://hukai.me/eBooks/AndroidTrainingCHS.pdf ePub: http://hukai.me/eBooks/AndroidTrainingCHS.epub Mobi: http://hukai.me/eBooks/AndroidTrainingCHS.mobi 更新记录 v0.9 - 2015/03/09 v0.8 - 2015/02/12 v0.7 - 2014/11/30 v0.6 - 2014/11/02 v0.5 - 2014/10/18 v0.4 - 2014/09/11 v0.3 - 2014/08/31 v0.2 - 2014/08/14 v0.1 - 2014/08/05 参与方式 你可以选择以下的方式帮忙修改纠正这份教程(推荐使用方法1): 1. 通过在线阅读课程的页面,找到Github仓库对应的章节文件,直接在线编辑修改提交即可。 2. 在线阅读的文章底部留言,提出问题与修改意见,我们会及时处理。 3. 写邮件给发起人:胡凯,邮箱是kesenhoo at gmail.com,邮件内容注明需要纠正的章节段落位置,并给出纠正的建议。 你也可以选择加入QQ群和学习Training课程的小伙伴一起讨论交流: Android Training基础群,适合刚接触Android Training课程的同学。 基础群(1):363415744,已满 基础群(2):399077455 Android Training进阶群:414115939,适合实际Android开发经验1-3年的同学。 Android Training高级群:399096506,理论上Android开发经验至少3年以上,部分能力突出的也可以申请,请在申请入 群的时候填写能力举证(例如,XXX公司Android高级开发/个人博客/Github账号等等),谢谢配合! 课程结构 序言 Android入门基础:从这里开始 建立你的第一个App - @yuanfentiank789 添加ActionBar - @vincent4j 兼容不同的设备 - @Lin-H 管理Activity的生命周期 - @kesenhoo 使用Fragment建立动态的UI - @fastcome1985 数据保存 - @kesenhoo 与其他应用的交互 - @kesenhoo Android分享操作 分享简单的数据 - @kesenhoo 分享文件 - @jdneo 使用NFC分享文件 - @jdneo Android多媒体 管理音频播放 - @kesenhoo 拍照 - @kesenhoo 打印 - @jdneo Android图像与动画 高效显示Bitmap - @kesenhoo 使用OpenGL ES显示图像 - @jdneo 添加动画 - @XizhiXu Android网络连接与云服务 无线连接设备 - @naizhengtan 网络连接操作 - @kesenhoo 高效下载 - @kesenhoo 使用Sync Adapter传输数据 - @jdneo 使用Volley执行网络数据传输 - @kesenhoo 云同步 - @kesenhoo,@jdneo 解决云同步的保存冲突 - @jdneo Android联系人与位置信息 Android联系人信息 - @spencer198711 Android位置信息 - @penkzhou Android可穿戴应用 赋予Notification可穿戴的特性 - @wangyachen 创建可穿戴的应用 - @kesenhoo 创建自定义的UI - @Roya 发送并同步数据 - @wly2014 Android TV应用 创建TV应用 - @awong1900 创建TV播放应用 - @待认领 帮助用户在TV上探索内容 - @待认领 创建TV游戏应用 - @dupengwei 创建TV直播应用 - @dupengwei TV Apps Checklist - @待认领 Android交互设计 设计高效的导航 - @XizhiXu 实现高效的导航 - @Lin-H 通知提示用户 - @fastcome1985 增加搜索功能 - @Lin-H 使得你的App内容可被Google搜索 - @Lin-H Android界面设计 为多屏幕设计 - @riverfeng 创建自定义View - @kesenhoo 创建向后兼容的UI - @spencer198711 实现辅助功能 - @K0ST 管理系统UI - @K0ST 创建Material Design的应用 - @allenlsy Android用户输入 使用触摸手势 - @Andrwyw 处理键盘输入 - @zhaochunqi 兼容游戏控制器 - @2014/07/10 - 待认领 Android后台任务 在IntentService中执行后台任务 - @kesenhoo 在后台加载数据 - @kesenhoo 管理设备的唤醒状态 - @lltowq Android性能优化 管理应用的内存 - @kesenhoo 性能优化Tips - @kesenhoo 提升Layout的性能 - @allenlsy 优化电池寿命 - @kesenhoo 多线程操作 - @AllenZheng1991 避免程序无响应ANR - @kesenhoo JNI Tips - @pedant 优化多核处理器(SMP)下的Android程序 - @kesenhoo - 20% Android安全与隐私 Security Tips - @craftsmanBai 使用HTTPS与SSL - @craftsmanBai 企业版App - @craftsmanBai Android测试程序 测试你的Activity - @huanglizhuo 致谢 发起这个项目之后,得到很多人的支持,有经验丰富的Android开发者,也有刚接触Android的爱好者。他们有些已经上班, 有些还是学生,有些在国内,还有的在国外!感谢所有参与或者关注这个项目的小伙伴! 下面是参与翻译的小伙伴(Github ID按照课程结构排序): 0 1 2 @yuanfentiank789 @vincent4j @Lin-H
Description: