阅读 1687

Now in Android | 12 月刊 · 2019

作者 / Chet Haase, Android 开发技术推广工程师

欢迎大家来到 Now in Android 栏目,本栏目将专注于为开发者们提供近期值得关注的 Android 开发热点内容。

Android Dev Summit 视频回顾

我们于近两个月一直在连载关于 Android Dev Summit 的中文字幕视频,包括《是时候迁移至 AndroidX 了》、《Android Studio 的进展与新功能》和《Fragment 的过去、现在和将来》等。也请同时关注我们的 Bilibili 账号查看更多谷歌开发技术视频!

手势导航连载

我们的同事 Chris Banes 为各位开发者们发布了一个「手势导航」系列的文章,帮助大家处理 Android 10 中的手势变更的问题:

手势导航 (一) | 开启全面屏体验》介绍了将应用构建到全面屏设备,开启 "边到边" 的全面屏体验之旅。

手势导航 (二) | 处理视觉冲突》介绍如何处理与系统 UI 出现视觉重叠的问题,判断安全的交互区域。

手势导航 (三) | 处理手势冲突》介绍如何处理您的应用和 Android 10 中新引入的系统交互手势之间的冲突。

手势导航 (四) | 沉浸模式》介绍手势交互和冲突在全屏应用 (系统栏也被隐藏) 下的情况和注意事项。

无障碍文档改进

文档团队最近迭代了一些无障碍 (Accessibility) 相关的文档。其中请大家特别关注这两篇: 《让应用使用起来更没有障碍》和《改进应用无障碍特性的原则》。尤其需要大家留意的是关于标签元素 (Label) 的章节,我们在其中提供了大量的案例来进行重点讲解。

AndroidX 库发布情况更新

近一个月内的一些主要组件更新到了一个里程碑版本,包括稳定版和发布候选版:

稳定版发布列表

Room 2.2.3 在 2.2.0 稳定版的基础上做了一些 bug 修复。这里回顾一下我们在 10 月初发布的 Room 2.2.0 这个重要的正式版本中所包含的新内容:

  1. 预封装的数据库。现在您可以在自己的 APK 资源中发布一个预先填充过内容的数据库,也可以经由文件来加载数据库内容。Florina Muntenescu 几周前在一篇文章中介绍过这个功能。
  2. 更好的关系: SQLite 可以处理多对多关系,但以前的 Room 就不行……现在可以了 (我们接下来会发布一篇介绍文章,敬请关注)。
  3. Flow: 为了完善前一个发布版本中对协程的使用,Room 现在支持将 Flow 作为 DAO 返回类型。
  4. 速度更快的构建 (相信这正是大家想要的): 注解处理器的增量构建优势现在也被用在了 Room 上 。这个功能现在还没有默认启用,但大家可以在自己的构建中做一些设置来启用这个功能,从而提升速度。

ViewPager2 1.0.0

相比较旧版的 ViewPager,ViewPager2 所做的改进有:

  • 支持 RTL (从右向左) 布局
  • 支持竖直朝向布局
  • 可靠的 Fragment 支持 (包括将变动信息传递给下层的 Fragment 集合)
  • 数据集变化动画 (包括对 DiffUtil 的支持)

从旧版 ViewPager 迁移至 ViewPager2 十分轻松 (我们尽可能确保了 API 的延续性)。请参考迁移指南和我们提供的示例应用

请阅读 ViewPager2 使用指南以了解如何在 Fragment 页面间完成滑动操作。

Transition 1.2.0

如果您的编译目标是 API 29,这次更新对您来说就非常重要。Android 10 针对非 SDK 接口 (限制非公开 API 的使用) 做出的更改影响了一些方法,而这些方法影响到了 Transition 代码库的映射。更新后的代码库将使用我们提供的新版公开方法。所以,如果您确有需要,请更新到这个版本。

同时发布稳定版的组件库有:

  • Annotation-Experimental 1.0.0
  • Autofill 1.0.0
  • Benchmark 1.0.0
  • Biometric 1.0.1
  • Browser 1.2.0
  • CoordinatorLayout 1.1.0
  • Enterprise 1.0.0
  • Exifinterface 1.1.0
  • Paging 2.1.1
  • Recyclerview 1.1.0
  • ViewPager2 1.0.0
  • Webkit 1.1.0。

上述提到的组件库发布相关内容,请参见这个链接了解更多: developer.android.google.cn/jetpack/and…

发布候选 (Release Candidate) 列表

发布候选的意思基本上是: "我们认为它已经进入稳定/终版状态,不过在正式这么宣布之前,我们会再观察一阵子"。下面的这些代码库即将在它们的下个版本进入发布候选列表:

  • Activity 1.1.0-rc03
  • Core 1.2.0-rc01
  • Fragment 1.2.0-rc04
  • Lifecycle 2.2.0-rc03
  • Lifecycle-ViewModel-Savedstate 1.0.0-rc03
  • Navigation 2.2.0-rc04
  • ShareTarget 1.0.0-rc01
  • Transition 1.3.0-rc02

关于所有 RC 版组件库的发布和更新,请参见这个链接了解更多: developer.android.google.cn/jetpack/and…

Jetpack Compose

△ Jetpack Compose 使用教程中的示例代码
Jetpack Compose 在十月底的 Android Dev Summit 上公布,不过它并不属于典型的 alpha/beta/发布候选/稳定版的范畴: 它属于 "开发者预览版" 。这是一种非常早期的版本,比 alpha 版还早,我们的团队还会不断改进它。如果您现在就想一睹为快,上手做做代码实验,请移步至 Jetpack Compose 教程,其中提供了许多内容帮您上手。此外,正如许多教程都会做的那样,它也会为您提供一些解释说明和范例。

如果您想要上手操作更深入的范例,请来试试我们全新推出的 Codelab: Jetpack Compose Basics

学习课程和开发指南

Udacity 课程

△ 使用 Kotlin 进行 Android 进阶开发
Udacity 现已推出全新的免费课程: 使用 Kotlin 进行 Android 进阶开发。这些全新的内容由开发者关系团队的多名成员讲授 (我也会在课程里为大家讲解属性动画,正如我自 2012 年以来在 DevBytes 中所做的一样。生活很有趣,是一个螺旋上升的过程不是吗?)

这套课程涵盖了 Android 开发过程中的各种进阶问题,包括通知、定制视图、动画、映射、测试,以及使用 Firebase UI 登录等等。

Codelabs

△ 使用 Kotlin 进行 Android 进阶开发的 Codelabs 列表
我们还为各位开发者们准备了一系列新的 Codelabs,组成了一个 "使用 Kotlin 进行 Android 进阶开发" 的课程。这一系列的 Codelabs 安排与教学课程类似,相比较全部由讲师主导课程,我们希望可以让开发者们自行决定学习进度,并在这个基础上与视频教学内容配合学习。无论您是喜欢通过阅读和代码实验来自行解决问题,还是倾向于在讲师的帮助下了解代码,我们都可以满足您的需求。您只需要: 选好方向,开始学习!

  • 课程主页: 使用 Kotlin 进行 Android 进阶开发:

codelabs.developers.google.com/advanced-an…

另外我们还推出了使用 Dagger 进行依赖注入的 Codelab,也别忘了进来看看。

依赖注入的开发指南

我们还制作了一个全新的指南,教您如何在 Android 中进行依赖注入 (Dependency Injection, DI)。为了更加扎实地指导大家编写 Android 应用,我们推荐大家采用 Dagger 来进行 DI 操作。(请注意,我们提供的指导和建议仅供参考,目的是向大家说明各种选择的作用,并不是非遵循不可的规则;最适合自己的代码写法还是只有自己最清楚。)

Android Studio 4.0 Canary

通常我们并不会公开发表 Studio 的 canary 版本,因为大多数开发者想要的是更加稳定的终版。不过 4.0 版本中备受期待的功能实在太多,实在是值得拿出来一说。我们已经在 Android 开发者峰会上多次介绍过它 (包括 Android Studio 的新功能介绍和新设计工具介绍),这里再多说几句也无妨。

4.0 版本中的部分新功能包括:

  • 如果您想尝试一下 Compose 的开发者预览版本,就必须使用 4.0 版本。

△ Motion Editor 可以编辑起始和结束状态,以及在二者之间切换时的动画

  • Motion Editor: MotionLayout 的初步版本已经发布了一段时间,但只能靠 XML 编辑器来操作的话感觉就很不方便。现在大家可以使用专门为它构建的设计工具来创建动画了。
  • Java 8 代码库脱糖,包括对 java.util.stream 以及其他 Java 8 API 的支持,以上支持均通过神奇的 D8 编译器完成。

……注意上面这些只是部分新功能,远不是全部!

请大家参阅发布说明以了解各种功能的详情。如果您想要试用这些新功能,请前往 Canary 频道下载。

又到了追踪圣诞老人的时节了!

年关将至,Santa Tracker 再度归来!今年我们的 "追踪圣诞老人" Android 应用与网站、新游戏等等内容进行了更丰富的整合。这次我们也会照例在明年年初对应用进行开源,请关注我们的 GitHub,时刻了解最新进展。

谢谢大家对 Now in Android 栏目的支持,祝大家在 Android 开发路上一切顺心!

点击这里提交产品反馈建议