作者 / 开发者关系工程师 Marcel Pintó Biescas,@marxallski
Android 12 改进 了一项被许多 Android 用户视为关键的功能 - App Widgets,改进后的 Widgets 更加实用、美观,且更易于被用户发现 (84% 的用户至少使用一个 Widgets)。现在,我们发布了 Jetpack Glance 的第一个 Alpha 版,让 Widgets 的构建过程变得更加轻松,该版本是建立在 Jetpack Compose 运行时 (Runtime) 之上的新框架,旨在实现更快、更轻松的为主屏幕或其他界面构建 App Widgets。
欢迎您开始尝试并 分享反馈意见。
Glance 提供了新式声明性 Kotlin API,其类似于您在 Jetpack Compose 中使用的 API,能够帮助您用更少的代码构建更美观的自适应 App Widgets。
【Jetpack Glance Alpha 版现已推出】
文章图片
△ 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 结构示意图
这意味着 Glance 需要 启用 Compose,且依赖于运行时 (Runtime)、图形 (Graphics) 和单元界面 Compose 层,但它与其他现有的 Jetpack Compose 界面元素之间不具备直接互操作性。但是,您可以分享应用中的状态或任何其他逻辑,以此来打造一目了然的界面。
Alpha 版介绍 此初始版本引入了主要的 API,不仅能够实现与现有 RemoteViews 之间的互操作性,还能帮助您构建 App Widgets。
以下是该开发库提供的内容概览:
- 通过 GlanceAppWidget 和 GlanceAppWidgetReceiver 声明您的 App Widgets。
- 利用 Glance 可组合项的初始集组合您的界面: Box、Row、Column、Text、Button、LazyColumn、Image、Spacer。
- 利用 GlanceModifier 方法将修饰符应用于可组合项。
- 利用预定义的 Action 处理用户交互:
- actionStartActivity
- actionRunCallback
- actionStartService
- actionStartBroadcastReceiver
- 通过 ActionParameters 为 Action 提供参数。
- 通过定义 SizeMode.Single、SizeMode.Exact 或 SizeMode.Responsive 来处理 不同的 Widgets 布局。
- 提供 GlanceStateDefinition,以保留 GlanceAppWidget 状态。
- 提供本地组合,例如 LocalContext、LocalState、LocalGlanceId、LocalSize。
- 通过 AndroidRemoteViews 可组合项实现与您现有 RemoteViews 之间的互操作。
注意: 虽然 SDK 的最低版本是 21,但 Alpha 版目前支持兼容的最低版本为 SDK v23。可以查看 在 Android 12 中构建新式 Android App Widgets 视频了解更多详细信息。
Glance 使用入门 您可以在 GitHub 上查看 示例,以便快速入门。也可以在最新的 稳定版 Android Studio 中使用 Glance,但首先需要按照 Jetpack Compose 文档 中的步骤进行设置,因为 Glance 依赖于 Compose 运行时 (Runtime)。
此外,您还可以查看 AndroidX 代码库中的进阶示例。
编写您自己的插件,您可以扩展 Android Gradle Plugin 并根据您的项目需求自定义您的构建!
△ ResponsiveAppWidget.kt 演示
Alpha 版本是您参与开发 API 的重要机会,因此,欢迎 分享您的反馈,帮助我们了解并进一步提升您的体验!也欢迎您持续关注我们了解更多最新内容。
期待您的体验!
欢迎您 点击这里 向我们提交反馈,或分享您喜欢的内容、发现的问题。您的反馈对我们非常重要,感谢您的支持!
推荐阅读
- 学不动了吗(Android Jetpack Compose 开发应用指南,从入门到精通,一篇就够了!)
- Android Jetpack 全家桶全面学习 | 使用databinding
- Jetpack系列——ViewModel
- 【Android Jetpack 全家桶全面学习】 Fragment 之间共享数据
- Android Jetpack 知识点强化实战(实现登录页面、APP主框架、Kotlin Flow项目实战....)
- 【建议收藏】Jetpack Compose编程知识全汇总 (含详细实例讲解)