Now in Android 16 —— 最新 Android 动态分享

2021-08-31 15:24:20 浏览数 (1)

大家好,我是秉心说。

新一期的 Now in Android 又更新了,原文地址如下:

https://medium.com/androiddevelopers/now-in-android-16-9a282ebd3f42

AndroidX Release

和往常一样,最近更新了很多 AndroidX 类库,其中包含两个 stable 版本:

  • Navigation 2.2.2
  • Preference 1.1.1

包含一些 bug fix,并没有什么新特性。

除此之外,还有很多的 RC 、beta 、alpha 版本更新。作者挑了两个动画相关的 alpha 版本更新着重说明, Core-Animation 1.0.0-alpha01 和 Vectordrawable-Seekable 1.0.0-alpha01。

Core-Animation 1.0.0-alpha01 应该是把之前的动画 API 搬到 androidx 上了,并添加了一些新特性,就包括 AnimatedVectorDrawable,它具备 seekable 特性,可以暂停和恢复,自动设置动画位置。

更多详细信息,可以查看官网相关文档。

文章和视频

Database Inspector

关于 Database Inspector, 我前几天专门写了一篇文章做了详细介绍,数据库还可以这么看 ?

这里再简单说一下,通过 Database Inspector ,你可以在 Android Studio 中快速查看和修改你的数据库表数据,除此之外,你也可以执行 Sql 语句。如果你使用的是 Room 数据库,你还可以直接执行你的 Dao 文件中的 Sql 语句。

另外说一点,我的文章是基于 Android Studio Canary 5 写的。在最新的 Android Studio Canary 6 中,已经支持了 Live Update 功能,即你再修改表数据之后,UI 页面会自动刷新,而之前你必须得手动刷新才能看到修改。

更多详细内容,可以阅读我的文章,也可以阅读 Google 团队的文章,地址如下:

https://medium.com/androiddevelopers/database-inspector-9e91aa265316

操作符重载

这是 Kotlin Vocabulary 系列的新文章,介绍了 操作符重载 ,原文地址如下:

https://medium.com/androiddevelopers/code-expressivity-with-operator-overloading-ada22a0ca633

正常情况下, - * / 等符号只能应用于特定类型,通过 Kotlin 的操作符重载,你可以对任意对象使用这些符号。举个文中最简单的例子,

代码语言:javascript复制
operator fun ViewGroup.plusAssign(other: View) = addView(other)

然后你就可以这样使用了。

代码语言:javascript复制
viewGroup  = view

原理其实也很简单,编译器的黑魔法而已。你查看字节码就可以看到,符号又被替换回了 plusAssign() 方法。

目前 Kotlin 支持的重载操作符有这些。

Kotlin 在一些方面留给了开发者很大的自由发挥空间,像操作符重载,扩展函数等。你可以充分发挥自己的想象力去创造代码,这也是我很喜欢 Kotlin 的一个重要原因。

Material Design Components

Nick Rout 的一篇新文章 Migrating to Material Components for Android ,地址如下:

https://medium.com/androiddevelopers/migrating-to-material-components-for-android-ec6757795351

这个其实就是 com.google.android.material:material:1.0.0 ,用以代替以前的 Design Support 库。最近由 1.0.0 升级到了 1.1.0 ,有许多的细节更新,包括 Dark Theme ,完整的 Material 主题支持(包括颜色,样式),新的组件(FAB,data picker) 。

作者建议如果你是从 Design Support 库升级上来的,先升级到 1.0.0 版本,没有问题的话再升到 1.1.0 版本。

文中有许多的更新细节,这篇文章我还没有细看,后续会将我的开源 Wanandroid 项目也更新到 1.1.0 版本。

另外,还有视频版本,地址如下:

https://www.youtube.com/watch?v=64OD1PAqELg&feature=emb_logo

One Tap

这个类似国内的各种 一键免密登录,由 Google Identity Services 提供。当然也就意味着,跟我们大多数人没太大关系。如果你是出海应用,可以关注一下。

https://medium.com/androiddevelopers/one-tap-sign-in-for-android-apps-2259ce15bc2c

LiveData

受疫情影响,Jose Alcérreca 继续他的 录屏系列

两个一分半的视频。第一个视频介绍了协程和 LiveData 的基本使用。

https://www.youtube.com/watch?list=PLNUr_cTShrWZNKJlnurh5MB1wkSEU2nlw&time_continue=1&v=KUn0-D6DpuY&feature=emb_logo

第二个视频介绍了 switchMap 的基本使用。

https://www.youtube.com/watch?v=KUn0-D6DpuY&list=PLNUr_cTShrWZNKJlnurh5MB1wkSEU2nlw&index=6

Sample Code

定位,定位,定位

(重要的事情说三遍。)

关于 Android 11 中定位功能的相关变化,在前面几期的 Now in Android 中已经做过介绍。如果你还不了解的话,可以看看 Google 重写过后的 Android Location Codelab ,地址如下:

https://codelabs.developers.google.com/codelabs/while-in-use-location/index.html?index=../..index#0

这个 codelab 提供了前台请求定位的最佳实践。所谓前台是指应用可见,或者应用正在运行一个有通知的前台服务。

那么后台请求定位呢?首先,是不建议后台请求定位的,除非你有合理的用户场景。如果真的有用户场景的话,官网也有相关介绍:

https://developer.android.com/training/location/background

后台请求定位的示例代码:

https://github.com/android/location-samples/tree/master/LocationUpdatesBackgroundKotlin

无障碍

其实我也不知道国内有多少应用会去做无障碍的,包括我自己也没有做过。Google 建议每一款 App 都要考虑到特殊人群无障碍使用。

Shailen Tuli 发布了两个 codelab 来帮助开发者完成无障碍适配。第一个 codelab 介绍了一些通用问题和解决方案,地址如下:

https://codelabs.developers.google.com/codelabs/starting-android-accessibility/#0

第二个 codelab 介绍了如何使用 Espresso 完成无障碍相关的自动化测试。地址如下:

https://codelabs.developers.google.com/codelabs/a11y-testing-espresso/#0

最后

我是秉心说,这一期的 Now in Android 就到这里了,大家下期再见!

0 人点赞