现代 Android 小部件开发

Luk*_*uke 4 android widget android-widget

现在是 2020 年,在 iOS 最终添加对小部件的支持后,小部件再次风靡一时。但是,Android Widgets 似乎自 2012 年以来就没有更新过。

Android 文档

RemoteViews 对象(以及相应的 App Widget)可以支持以下布局类:

  • 框架布局
  • 线性布局
  • 相对布局
  • 网格布局

这意味着,没有 ConstraintLayout,没有 RecyclerView,没有 AndroidX。我不想回到 ListView 的黑暗日子。

Android 开发者网站上的文档真的仍然是当今开发 Android Widget 的最佳实践吗?有没有人有在 AndroidX 世界中制作小部件的经验?是否有任何类型的 3rd 方 API 可以使体验不那么痛苦?

Com*_*are 5

但是,Android Widgets 似乎自 2012 年以来就没有更新过。

正确的。

我不想回到 ListView 的黑暗日子。

嗯……对不起?

Android 开发者网站上的文档真的仍然是当今开发 Android Widget 的最佳实践吗?

应用小部件不是关于“最佳实践”,而是更多关于记录和支持的协议。请记住,应用小部件实际上是一种进程间通信 (IPC) 协议,它最终会产生 UI。你的应用没有渲染 UI——主屏幕或其他应用小部件主机,通常在AppWidgetHost相关 API的帮助下。

这意味着,没有 ConstraintLayout,没有 RecyclerView,没有 AndroidX。

正确的。毕竟,您不知道主屏幕是否可以访问任何这些东西,或者它们的版本等等。

是否有任何类型的 3rd 方 API 可以使体验不那么痛苦?

那真的不可能。您的应用与应用小部件几乎没有关系。“举重”在框架中,在较小程度上是主屏幕。第三方 API 无法真正改变这一点。

我期待谷歌开始引导启动器开发人员开始支持切片作为“应用程序小部件”的替代形式。这还没有发生,因为谷歌似乎已经忘记了切片。也许,在未来,谷歌会提供基于Android 11 的SurfaceControlViewHost东西,这为各种可能性打开了大门。在这两种情况下,可能需要启动器开发人员进行更改以支持这些内容,这将减慢采用速度。

要提供超出小部件和容器的有限列表中的 UI,您可以做的最接近的事情是将您自己的内容呈现到BitmapImageView在应用程序小部件中显示。这会变得棘手,因为您不知道应用小部件的精确大小。当然,这不会改变输入选项。

  • @Luke:iOS已经认可了应用程序小部件概念这一事实可能有助于在Google的背后“点燃一把火”,并让他们在该领域投入更多。如果 [Jetpack Compose 最终在这里发挥作用](/sf/answers/4454597101/),我不会感到惊讶。但总的来说,我能感受到你的痛苦。 (2认同)