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<T> 作为 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。

上述提到的组件库发布相关内容,请参见这个链接了解更多: https://developer.android.google.cn/jetpack/androidx/versions/stable-channel?hl=en#december_18_2019

发布候选 (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 版组件库的发布和更新,请参见这个链接了解更多:https://developer.android.google.cn/jetpack/androidx/versions/rc-channel?hl=en#december_18_2019

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 进阶开发:

https://codelabs.developers.google.com/advanced-android-kotlin-training/

另外我们还推出了使用 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 开发路上一切顺心!

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,069评论 4 358
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,212评论 1 287
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 105,912评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,424评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,741评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,194评论 1 206
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,553评论 2 307
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,289评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,923评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,251评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,775评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,144评论 2 249
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,698评论 3 228
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,936评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,658评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,214评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,159评论 2 258

推荐阅读更多精彩内容