Android官方培训中文课程

序言 | Android官方培训课程中文版(v0.9.5)
  • 序言
  • 1. Android入门基础:从这里开始
    • 1.1. 建立第一个App
      • 1.1.1. 创建Android项目
      • 1.1.2. 执行Android程序
      • 1.1.3. 建立简单的用户界面
      • 1.1.4. 启动其他的Activity
    • 1.2. 添加ActionBar
      • 1.2.1. 建立ActionBar
      • 1.2.2. 添加Action按钮
      • 1.2.3. 自定义ActionBar的风格
      • 1.2.4. ActionBar的覆盖层叠
    • 1.3. 兼容不同的设备
      • 1.3.1. 适配不同的语言
      • 1.3.2. 适配不同的屏幕
      • 1.3.3. 适配不同的系统版本
    • 1.4. 管理Activity的生命周期
      • 1.4.1. 启动与销毁Activity
      • 1.4.2. 暂停与恢复Activity
      • 1.4.3. 停止与重启Activity
      • 1.4.4. 重新创建Activity
    • 1.5. 使用Fragment建立动态的UI
      • 1.5.1. 创建一个Fragment
      • 1.5.2. 建立灵活动态的UI
      • 1.5.3. Fragments之间的交互
    • 1.6. 数据保存
      • 1.6.1. 保存到Preference
      • 1.6.2. 保存到文件
      • 1.6.3. 保存到数据库
    • 1.7. 与其他应用的交互
      • 1.7.1. Intent的发送
      • 1.7.2. 接收Activity返回的结果
      • 1.7.3. Intent过滤
  • 2. Android分享操作
    • 2.1. 分享简单的数据
      • 2.1.1. 给其他App发送简单的数据
      • 2.1.2. 接收从其他App返回的数据
      • 2.1.3. 给ActionBar增加分享功能
    • 2.2. 分享文件
      • 2.2.1. 建立文件分享
      • 2.2.2. 分享文件
      • 2.2.3. 请求分享一个文件
      • 2.2.4. 获取文件信息
    • 2.3. 使用NFC分享文件
      • 2.3.1. 发送文件给其他设备
      • 2.3.2. 接收其他设备的文件
  • 3. Android多媒体
    • 3.1. 管理音频播放
      • 3.1.1. 控制音量与音频播放
      • 3.1.2. 管理音频焦点
      • 3.1.3. 兼容音频输出设备
    • 3.2. 拍照
      • 3.2.1. 简单的拍照
      • 3.2.2. 简单的录像
      • 3.2.3. 控制相机硬件
    • 3.3. 打印
      • 3.3.1. 打印照片
      • 3.3.2. 打印HTML文档
      • 3.3.3. 打印自定义文档
  • 4. Android图像与动画
    • 4.1. 高效显示Bitmap
      • 4.1.1. 高效加载大图
      • 4.1.2. 非UI线程处理Bitmap
      • 4.1.3. 缓存Bitmap
      • 4.1.4. 管理Bitmap的内存
      • 4.1.5. 在UI上显示Bitmap
    • 4.2. 使用OpenGL ES显示图像
      • 4.2.1. 建立OpenGL ES的环境
      • 4.2.2. 定义Shapes
      • 4.2.3. 绘制Shapes
      • 4.2.4. 运用投影与相机视图
      • 4.2.5. 添加移动
      • 4.2.6. 响应触摸事件
    • 4.3. 添加动画
      • 4.3.1. View间渐变
      • 4.3.2. 使用ViewPager实现屏幕滑动
      • 4.3.3. 展示Card翻转动画
      • 4.3.4. 缩放View
      • 4.3.5. 布局变更动画
  • 5. Android网络连接与云服务
    • 5.1. 无线连接设备
      • 5.1.1. 使用网络服务发现
      • 5.1.2. 使用WiFi建立P2P连接
      • 5.1.3. 使用WiFi P2P服务
    • 5.2. 执行网络操作
      • 5.2.1. 连接到网络
      • 5.2.2. 管理网络的使用情况
      • 5.2.3. 解析XML数据
    • 5.3. 传输数据时避免消耗大量电量
      • 5.3.1. 优化下载以高效地访问网络
      • 5.3.2. 最小化定期更新造成的影响
      • 5.3.3. 重复的下载是冗余的
      • 5.3.4. 根据网络连接类型来调整下载模式
    • 5.4. 云同步
      • 5.4.1. 使用备份API
      • 5.4.2. 使用Google Cloud Messaging
    • 5.5. 解决云同步的保存冲突
    • 5.6. 使用Sync Adapter传输数据
      • 5.6.1. 创建Stub授权器
      • 5.6.2. 创建Stub Content Provider
      • 5.6.3. 创建Sync Adpater
      • 5.6.4. 执行Sync Adpater
    • 5.7. 使用Volley执行网络数据传输
      • 5.7.1. 发送简单的网络请求
      • 5.7.2. 建立请求队列
      • 5.7.3. 创建标准的网络请求
      • 5.7.4. 实现自定义的网络请求
  • 6. Android联系人与位置信息
    • 6.1. Android联系人信息
      • 6.1.1. 获取联系人列表
      • 6.1.2. 获取联系人详情
      • 6.1.3. 使用Intents修改联系人信息
      • 6.1.4. 显示联系人头像
    • 6.2. Android位置信息
      • 6.2.1. 获取最后可知位置
      • 6.2.2. 获取位置更新
      • 6.2.3. 显示位置地址
      • 6.2.4. 创建和监视地理围栏
  • 7. Android可穿戴应用
    • 7.1. 赋予Notification可穿戴特性
      • 7.1.1. 创建Notification
      • 7.1.2. 在Notifcation中接收语音输入
      • 7.1.3. 为Notification添加显示页面
      • 7.1.4. 以Stack的方式显示Notifications
    • 7.2. 创建可穿戴的应用
      • 7.2.1. 创建并运行可穿戴应用
      • 7.2.2. 创建自定义的布局
      • 7.2.3. 添加语音功能
      • 7.2.4. 打包可穿戴应用
      • 7.2.5. 通过蓝牙进行调试
    • 7.3. 创建自定义的UI
      • 7.3.1. 定义Layouts
      • 7.3.2. 创建Card
      • 7.3.3. 创建List
      • 7.3.4. 创建2D Picker
      • 7.3.5. 创建确认界面
      • 7.3.6. 退出全屏的Activity
    • 7.4. 发送并同步数据
      • 7.4.1. 访问可穿戴数据层
      • 7.4.2. 同步数据单元
      • 7.4.3. 传输资源
      • 7.4.4. 发送与接收消息
      • 7.4.5. 处理数据层的事件
    • 7.5. 创建表盘
      • 7.5.1. 设计表盘
      • 7.5.2. 构建表盘服务
      • 7.5.3. 绘制表盘
      • 7.5.4. 在表盘上显示信息
      • 7.5.5. 提供配置 Activity
      • 7.5.6. 定位常见的问题
      • 7.5.7. 优化性能和电池使用时间
    • 7.6. 位置检测
  • 8. Android TV应用
    • 8.1. 创建TV应用
      • 8.1.1. 创建TV应用的第一步
      • 8.1.2. 处理TV硬件部分
      • 8.1.3. 创建TV的布局文件
      • 8.1.4. 创建TV的导航栏
    • 8.2. 创建TV播放应用
      • 8.2.1. 创建目录浏览器
      • 8.2.2. 提供一个Card视图
      • 8.2.3. 创建详情页
      • 8.2.4. 显示正在播放卡片
    • 8.3. 帮助用户在TV上探索内容
      • 8.3.1. TV上的推荐内容
      • 8.3.2. 使得TV App能够被搜索
      • 8.3.3. 使用TV应用进行搜索
    • 8.4. 创建TV游戏应用
    • 8.5. 创建TV直播应用
    • 8.6. TV Apps Checklist
  • 9. Android企业级应用
    • 9.1. Ensuring Compatibility with Managed Profiles
    • 9.2. Implementing App Restrictions
    • 9.3. Building a Work Policy Controller
  • 10. Android交互设计
    • 10.1. 设计高效的导航
      • 10.1.1. 规划屏幕界面与他们之间的关系
      • 10.1.2. 为多种大小的屏幕进行规划
      • 10.1.3. 提供向下和横向导航
      • 10.1.4. 提供向上和历史导航
      • 10.1.5. 综合:设计样例 App
    • 10.2. 实现高效的导航
      • 10.2.1. 使用Tabs创建Swipe视图
      • 10.2.2. 创建抽屉导航
      • 10.2.3. 提供向上的导航
      • 10.2.4. 提供向后的导航
      • 10.2.5. 实现向下的导航
    • 10.3. 通知提示用户
      • 10.3.1. 建立Notification
      • 10.3.2. 当启动Activity时保留导航
      • 10.3.3. 更新Notification
      • 10.3.4. 使用BigView风格
      • 10.3.5. 显示Notification进度
    • 10.4. 增加搜索功能
      • 10.4.1. 建立搜索界面
      • 10.4.2. 保存并搜索数据
      • 10.4.3. 保持向下兼容
    • 10.5. 使得你的App内容可被Google搜索
      • 10.5.1. 为App内容开启深度链接
      • 10.5.2. 为索引指定App内容
  • 11. Android界面设计
    • 11.1. 为多屏幕设计
      • 11.1.1. 兼容不同的屏幕大小
      • 11.1.2. 兼容不同的屏幕密度
      • 11.1.3. 实现可适应的UI
    • 11.2. 创建自定义View
      • 11.2.1. 创建自定义的View类
      • 11.2.2. 实现自定义View的绘制
      • 11.2.3. 使得View可交互
      • 11.2.4. 优化自定义View
    • 11.3. 创建向后兼容的UI
      • 11.3.1. 抽象新的APIs
      • 11.3.2. 代理至新的APIs
      • 11.3.3. 使用旧的APIs实现新API的效果
      • 11.3.4. 使用版本敏感的组件
    • 11.4. 实现辅助功能
      • 11.4.1. 开发辅助程序
      • 11.4.2. 开发辅助服务
    • 11.5. 管理系统UI
      • 11.5.1. 淡化系统Bar
      • 11.5.2. 隐藏系统Bar
      • 11.5.3. 隐藏导航Bar
      • 11.5.4. 全屏沉浸式应用
      • 11.5.5. 响应UI可见性的变化
    • 11.6. 创建使用Material Design的应用
      • 11.6.1. 开始使用Material Design
      • 11.6.2. 使用Material的主题
      • 11.6.3. 创建Lists与Cards
      • 11.6.4. 定义Shadows与Clipping视图
      • 11.6.5. 使用Drawables
      • 11.6.6. 自定义动画
      • 11.6.7. 维护兼容性
  • 12. Android用户输入
    • 12.1. 使用触摸手势
      • 12.1.1. 检测常用的手势
      • 12.1.2. 跟踪手势移动
      • 12.1.3. 滚动手势动画
      • 12.1.4. 处理多点触控手势
      • 12.1.5. 拖拽与缩放
      • 12.1.6. 管理ViewGroup中的触摸事件
    • 12.2. 处理键盘输入
      • 12.2.1. 指定输入法类型
      • 12.2.2. 处理输入法可见性
      • 12.2.3. 支持键盘导航
      • 12.2.4. 处理按键动作
    • 12.3. 支持游戏控制器
      • 12.3.1. 处理控制器输入动作
      • 12.3.2. 在不同的 Android 系统版本支持控制器
      • 12.3.3. 支持多个控制器
  • 13. Android后台任务
    • 13.1. 在IntentService中执行后台任务
      • 13.1.1. 创建IntentService
      • 13.1.2. 发送工作任务到IntentService
      • 13.1.3. 报告后台任务执行状态
    • 13.2. 使用CursorLoader在后台加载数据
      • 13.2.1. 使用CursorLoader执行查询任务
      • 13.2.2. 处理CursorLoader查询的结果
    • 13.3. 管理设备的唤醒状态
      • 13.3.1. 保持设备的唤醒
      • 13.3.2. 制定重复定时的任务
  • 14. Android性能优化
    • 14.1. 管理应用的内存
    • 14.2. 代码性能优化建议
    • 14.3. 提升Layout的性能
      • 14.3.1. 优化layout的层级
      • 14.3.2. 使用include标签重用layouts
      • 14.3.3. 按需加载视图
      • 14.3.4. 使得ListView滑动顺畅
    • 14.4. 优化电池寿命
      • 14.4.1. 监测电量与充电状态
      • 14.4.2. 判断与监测Docking状态
      • 14.4.3. 判断与监测网络连接状态
      • 14.4.4. 根据需要操作Broadcast接受者
    • 14.5. 多线程操作
      • 14.5.1. 在一个线程中执行一段特定的代码
      • 14.5.2. 为多线程创建线程池
      • 14.5.3. 启动与停止线程池中的线程
      • 14.5.4. 与UI线程通信
    • 14.6. 避免出现程序无响应ANR
    • 14.7. JNI使用指南
    • 14.8. 优化多核处理器(SMP)下的Android程序
  • 15. Android安全与隐私
    • 15.1. Security Tips
    • 15.2. 使用HTTPS与SSL
    • 15.3. 为防止SSL漏洞而更新Security
    • 15.4. 使用设备管理条例增强安全性
  • 16. Android测试程序
    • 16.1. 测试你的Activity
      • 16.1.1. 建立测试环境
      • 16.1.2. 创建与执行测试用例
      • 16.1.3. 测试UI组件
      • 16.1.4. 创建单元测试
      • 16.1.5. 创建功能测试
  • Published using GitBook

Android Training

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

参与方式

你可以选择以下的方式帮忙修改纠正这份教程(推荐使用方法1):

  1. 通过在线阅读课程的页面,找到Github仓库对应的章节文件,直接在线编辑修改提交即可。
  2. 在线阅读的文章底部留言,提出问题与修改意见,我们会及时处理。
  3. 写邮件给发起人:胡凯,邮箱是kesenhoo at gmail.com,邮件内容注明需要纠正的章节段落位置,并给出纠正的建议。

你也可以选择加入QQ群和学习Training课程的小伙伴一起讨论交流:

  • Android Training基础群,适合刚接触Android Training课程的同学。
    • 基础群(1):363415744,已满
    • 基础群(2):399077455,已满
    • 基础群(3):458929573

  • Android Training进阶群:适合实际Android开发经验1-3年的同学。

    • 进阶群(1):414115939,已满
    • 进阶群(2):386059229

  • 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
    • 创建表盘 - @heray1990
    • 位置检测 - @heray1990

  • Android企业级应用

    • Ensuring Compatibility with Managed Profiles - @2015/03/14 - 待认领
    • Implementing App Restrictions - @2015/03/14 - 待认领
    • Building a Work Policy Controller - @2015/03/14 - 待认领

  • Android TV应用

    • 创建TV应用 - @awong1900
    • 创建TV播放应用 - @huanglizhuo
    • 帮助用户在TV上探索内容 - @awong1900
    • 创建TV游戏应用 - @dupengwei
    • 创建TV直播应用 - @dupengwei
    • TV应用清单 - @awong1900

  • 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
    • 支持游戏控制器 - @heray1990

  • Android后台任务

    • 在IntentService中执行后台任务 - @kesenhoo
    • 在后台加载数据 - @kesenhoo
    • 管理设备的唤醒状态 - @jdneo,@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

  • Android测试程序

    • 测试你的Activity - @huanglizhuo

致谢

发起这个项目之后,得到很多人的支持,有经验丰富的Android开发者,也有刚接触Android的爱好者。他们有些已经上班,有些还是学生,有些在国内,还有的在国外!感谢所有参与或者关注这个项目的小伙伴!

下面是参与翻译的小伙伴(Github ID按照课程结构排序):

0 1 2
@yuanfentiank789 @vincent4j @Lin-H
@kesenhoo @fastcome1985 @jdneo
@XizhiXu @naizhengtan @spencer198711
@penkzhou @wangyachen @wly2014
@fastcome1985 @riverfeng @xrayzh
@K0ST @Andrwyw @zhaochunqi
@lltowq @allenlsy @AllenZheng1991
@pedant @craftsmanBai @huanglizhuo
@Roya @awong1900 @dupengwei
0:10 1:10 2:10

@发起人:胡凯,博客:http://hukai.me,Github:https://github.com/kesenhoo,微博:http://weibo.com/kesenhoo

还有众多参与纠错校正的同学名字就不一一列举了,谢谢所有关注这个项目的小伙伴!特别感谢安卓巴士社区,爱开发社区,码农周刊对项目的宣传!

License

本站作品由https://github.com/kesenhoo/android-training-course-in-chinese创作,采用知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。

你可能感兴趣的:(Android官方培训中文课程)