Jetpack Glance Alpha 版现已推出

2021 年 12 月 27 日 谷歌开发者

作者 / 开发者关系工程师 Marcel Pintó Biescas,@marxallski

Android 12 改进了一项被许多 Android 用户视为关键的功能 - App Widgets,改进后的 Widgets 更加实用、美观,且更易于被用户发现 (84% 的用户至少使用一个 Widgets)。现在,我们发布了 Jetpack Glance 的第一个 Alpha 版,让 Widgets 的构建过程变得更加轻松,该版本是建立在 Jetpack Compose 运行时 (Runtime) 之上的新框架,旨在实现更快、更轻松的为主屏幕或其他界面构建 App Widgets。


  • Android 12 Widgets 改进
    https://developer.android.google.cn/about/versions/12/features/widgets

  • App Widgets
    https://developer.android.google.cn/guide/topics/appwidgets/overview

  • Jetpack Glance
    https://developer.android.google.cn/jetpack/androidx/releases/glance

  • Jetpack Compose 运行时 (Runtime)
    https://developer.android.google.cn/jetpack/androidx/releases/compose-runtime


欢迎您开始尝试并 分享反馈意见 :
https://issuetracker.google.com/issues/new?component=1097239&template=1611667

Glance 提供了新式声明性 Kotlin API,其类似于您在 Jetpack Compose 中使用的 API,能够帮助您用更少的代码构建更美观的自适应 App Widgets。
https://developer.android.google.cn/jetpack/compose

△ Glance "Hello World" Widgets 示例


class GreetingsWidget(private val name: String): GlanceAppWidget() {    @Composable    override fun Content() {        Text(text = "Hello $name")    }}
class GreetingsWidgetReceiver : GlanceAppWidgetReceiver() {
override val glanceAppWidget = GreetingsWidget("Glance")}


工作原理


Glance 提供了可组合项的基础组件集,助您打造 "一目了然" 的体验。现在,我们将提供更多的 App Widgets。Glance 利用 Jetpack Compose 运行时 (Runtime),可以将可组合项转化为实际的 RemoteViews,并在 App Widgets 中显示。

△  Glance 结构示意图
  • 可组合项
    https://developer.android.google.cn/reference/kotlin/androidx/compose/runtime/Composable

  • RemoteViews
    https://developer.android.google.cn/reference/android/widget/RemoteViews


这意味着 Glance 需要启用 Compose,且依赖于运行时 (Runtime)、图形 (Graphics) 和单元界面 Compose 层,但它与其他现有的 Jetpack Compose 界面元素之间不具备直接互操作性。但是,您可以分享应用中的状态或任何其他逻辑,以此来打造一目了然的界面。


  • 启用 Compose
    https://developer.android.google.cn/jetpack/compose/interop/adding#anchor
  • Compose 层
    https://developer.android.google.cn/jetpack/compose/layering



Alpha 版介绍


此初始版本引入了主要的 API,不仅能够实现与现有 RemoteViews 之间的互操作性,还能帮助您构建 App Widgets。


以下是该开发库提供的内容概览:

  • 通过 GlanceAppWidgetGlanceAppWidgetReceiver 声明您的 App Widgets。


  • GlanceAppWidget
    https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/GlanceAppWidget
  • GlanceAppWidgetReceiver
    https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiver

  • 利用 Glance 可组合项的初始集组合您的界面: Box Row Column Text Button LazyColumn Image Spacer

  • Box、Row、Column、Spacer
    https://developer.android.google.cn/reference/kotlin/androidx/glance/layout/package-summary#top-level-functions
  • Text
    https://developer.android.google.cn/reference/kotlin/androidx/glance/text/package-summary#text
  • Button
    https://developer.android.google.cn/reference/kotlin/androidx/glance/package-summary#button
  • LazyColumn
    https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/lazy/package-summary#lazycolumn
  • Image
    https://developer.android.google.cn/reference/kotlin/androidx/glance/package-summary#image

  • 利用 GlanceModifier 方法将修饰符应用于可组合项:

    https://developer.android.google.cn/reference/kotlin/androidx/glance/GlanceModifier.html

  • 利用预定义的 Action 处理用户交互:

    https://developer.android.google.cn/reference/kotlin/androidx/glance/action/package-summary

    • actionStartActivity

      https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartactivity

    • actionRunCallback
      https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionruncallback
    • actionStartService
      https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartservice
    • actionStartBroadcastReceiver

      https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartbroadcastreceiver


  • 通过 ActionParameters 为 Action 提供参数:

    https://developer.android.google.cn/reference/kotlin/androidx/glance/action/ActionParameters

  • 通过定义 SizeMode.Single SizeMode.Exact SizeMode.Responsive 来处理 不同的 Widgets 布局


  • SizeMode.Single
    https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Single
  • SizeMode.Exact
    https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Exact
  • SizeMode.Responsive
    https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Responsive
  • 不同的 Widgets 布局
    https://developer.android.google.cn/guide/topics/appwidgets/layouts

  • 提供 GlanceStateDefinition,以保留 GlanceAppWidget 状态。


  • GlanceStateDefinition
    https://developer.android.google.cn/reference/kotlin/androidx/glance/state/GlanceStateDefinition.html

  • GlanceAppWidget
    https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/state/package-summary


  • 提供本地组合,例如 LocalContext LocalState LocalGlanceId LocalSize
    https://developer.android.google.cn/reference/kotlin/androidx/glance/package-summary#top-level-properties

  • 通过 AndroidRemoteViews 可组合项实现与您现有 RemoteViews 之间的互操作。


  • AndroidRemoteViews
    https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/package-summary#androidremoteviews
  • RemoteViews
    https://developer.android.google.cn/reference/android/widget/RemoteViews.html

我们还将推出更多功能,例如默认主题,更完善的 Android Studio 支持等等。敬请期待新版本:

https://developer.android.google.cn/jetpack/androidx/releases/glance


注意: 虽然 SDK 的最低版本是 21,但 Alpha 版目前支持兼容的最低版本为 SDK v23。

△ 在 Android 12 中构建新式 Android App Widgets



Glance 使用入门


您可以在 GitHub 上查看 示例 ,以便快速入门。也可以在最新的 稳定版 Android Studio 中使用 Glance,但首先需要按照 Jetpack Compose 文档 中的步骤进行设置,因为 Glance 依赖于 Compose 运行时 (Runtime)。


  • 示例
    https://github.com/android/user-interface-samples/tree/glance/AppWidget/glance-widget

  • 稳定版 Android Studio
    https://developer.android.google.cn/studio

  • Jetpack Compose 文档
    https://developer.android.google.cn/jetpack/compose/interop/adding#setup


此外,您还可以查看 AndroidX 代码库中的进阶示例 :

https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/


编写您自己的插件,您可以扩展 Android Gradle Plugin 并根据您的项目需求自定义您的构建!
△  ResponsiveAppWidget.kt 演示
  • ResponsiveAppWidget.kt
    https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/ResponsiveAppWidget.kt

Alpha 版本是您参与开发 API 的重要机会,因此,欢迎 分享您的反馈 ,帮助我们了解并进一步提升您的体验!也欢迎您持续关注 "Android 开发者" 微信公众号了解更多最新内容。


  • 分享您的反馈
    https://issuetracker.google.com/issues/new?component=1097239&template=1611667


期待您的体验!

您也可以通过下方二维码向我们提交反馈,或分享您喜欢的内容、发现的问题。您的反馈对我们非常重要,感谢您的支持!



推荐阅读

如页面未加载,请刷新重试



 点击屏末  | 即刻了解 App Widgets 更多内容




登录查看更多
0

相关内容

Kotlin 是一种运行于 Java 虚拟机上的静态类型编程语言。
谷歌教你学 AI -机器学习的7步骤
专知会员服务
27+阅读 · 2022年3月13日
【2020新书】Ruby 3 编程: 从小白到专家,598页pdf
专知会员服务
29+阅读 · 2020年12月17日
【Google】平滑对抗训练,Smooth Adversarial Training
专知会员服务
46+阅读 · 2020年7月4日
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
深度解析 Jetpack Compose 布局
谷歌开发者
0+阅读 · 2022年3月31日
使用 Jetpack Compose 提升 Play 商店的用户体验
谷歌开发者
0+阅读 · 2022年3月31日
JankStats 推出 alpha 版本
谷歌开发者
0+阅读 · 2022年3月9日
Jetpack Compose 1.1 现已进入稳定版!
谷歌开发者
0+阅读 · 2022年3月7日
实战 | 在应用中使用 Compose Material 3
谷歌开发者
0+阅读 · 2022年2月21日
Flutter 正式推出 Windows 平台支持
谷歌开发者
0+阅读 · 2022年2月16日
新版本系统适配: Android 12 中的兼容性变更
谷歌开发者
0+阅读 · 2022年1月13日
Android 12 正式发布 | 开发者们的全新舞台
谷歌开发者
0+阅读 · 2021年10月11日
全新 Tiles API: 与您的智能手表用户分享磁贴
谷歌开发者
0+阅读 · 2021年9月8日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
3+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
2+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Arxiv
0+阅读 · 2022年4月18日
Deformable Style Transfer
Arxiv
14+阅读 · 2020年3月24日
VIP会员
相关资讯
深度解析 Jetpack Compose 布局
谷歌开发者
0+阅读 · 2022年3月31日
使用 Jetpack Compose 提升 Play 商店的用户体验
谷歌开发者
0+阅读 · 2022年3月31日
JankStats 推出 alpha 版本
谷歌开发者
0+阅读 · 2022年3月9日
Jetpack Compose 1.1 现已进入稳定版!
谷歌开发者
0+阅读 · 2022年3月7日
实战 | 在应用中使用 Compose Material 3
谷歌开发者
0+阅读 · 2022年2月21日
Flutter 正式推出 Windows 平台支持
谷歌开发者
0+阅读 · 2022年2月16日
新版本系统适配: Android 12 中的兼容性变更
谷歌开发者
0+阅读 · 2022年1月13日
Android 12 正式发布 | 开发者们的全新舞台
谷歌开发者
0+阅读 · 2021年10月11日
全新 Tiles API: 与您的智能手表用户分享磁贴
谷歌开发者
0+阅读 · 2021年9月8日
相关基金
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
3+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
2+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员