大家好,我是秉心说。
新一期的 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 的操作符重载,你可以对任意对象使用这些符号。举个文中最简单的例子,
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 就到这里了,大家下期再见!