Jetpack Compose 可以用于构建应用小部件吗?

Sty*_*kis 8 android android-widget android-jetpack-compose

使用 swift,可以使用 SwiftUI 编写小部件,但我没有看到任何关于是否可以使用 Jetpack Compose 构建 Android 应用小部件的声明。

现在 Compose 处于 Alpha 阶段,是否有任何信息可以让我看到如何做到这一点?

Noe*_*hew 13

2021 年 11 月 8 日更新:本视频中提到的新 Jetpack 库GlanceAppWidget。在撰写本文时无法找到有关 Glance 的更多信息。

看到谷歌的这篇文章。期待更多公告! 在此输入图像描述

链接: https: //developer.android.com/jetpack/androidx/compose-roadmap


Com*_*are 9

这在很大程度上取决于您所说的“Jetpack Compose”是什么意思。我们昨天还在Kotlinlang Slack上讨论过这个问题。

如果您指的是 Compose UI 和相关包——我们可以用来构建活动显示的 UI 的可组合库——那么不,这对应用小部件几乎没有作用。原则上,您可以将可组合对象呈现为Bitmap,然后将其与ImageView应用小部件中的 一起使用,但仅此而已。

如果您指的是 Compose Runtime — 背后的底层“管道” @Composable、重新组合remember()等 — 那么将来可能会提供一些东西。基本上,据我所知,可能还有另一组可组合项与构建和发布RemoteViews视图层次结构相关联。从好的方面来说,这会给你AppWidgetProvider一种 Compose 的“感觉”。但是,它不会导致像TextField在应用程序小部件中神奇地开始工作之类的事情。


Wes*_*y92 9

您可以使用 AndroidX 的 Glance,它现在是 Alpha 版本:

https://developer.android.com/jetpack/androidx/releases/glance

您可以在此处找到示例代码项目:

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


Sty*_*kis 6

事实证明这是不可能的事情,但它正在开发中。

根据Android 开发者YouTube 频道12:16 开始的这段视频,这是目前正在探索的想法,将于今年晚些时候(2021 年)发布。

它的外观示例如下(直接取自同一视频):

显示使用 Compose 构建小部件的方式的概念代码

  • 我想提供一些链接,以便其他开发人员也可以轻松导航到视频并查看他们要说的内容。我绝对没有否决你的答案,我赞成它并将其标记为已接受的答案,因为我相信你实际上回答得很好。抱歉,如果我让它看起来像那样,否则我如何能够向其他好奇的开发人员提供这些信息(主要是链接和示例代码)而不做我刚才所做的事情? (2认同)
  • 我真诚地道歉。在您发布此答案的时间非常接近的时候,有一个反对票,而我错误地猜测了反对票的来源。有另一个答案就完全没问题了。如果没有屏幕截图,您也可以将链接作为评论发布,但屏幕截图肯定会增加价值。我再次为我的错误道歉。 (2认同)
  • 太棒了,我很高兴没有误会!感谢您帮助我解决问题。 (2认同)